You are not logged in.

#1 2010-02-25 18:40:49

Fackamato
Member
Registered: 2006-03-31
Posts: 579

kernel26-icc compiled with Intel's compiler instead of gcc

I'm working on kernel26-icc, it's the kernel26 but compiled with Intel's compiler. Can't seem to upload it to AUR ("Invalid name: only lowercase letters are allowed.")

http://www.linuxdna.com/

So far I've this:

PKGBUILD

# Maintainer: Mathias Burén <mathias.buren@gmail.com>
pkgname=('kernel26-icc' 'kernel26-icc-firmware' 'kernel26-icc-headers') # Build icc kernel
_kernelname=${pkgname#kernel26-icc}
_basekernel=2.6.33
pkgver=${_basekernel}
pkgrel=1
arch=(x86_64)
license=('GPL2')
url="http://www.linuxdna.com/"
source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_basekernel.tar.bz2
    # the main kernel config files
    config.x86_64
    # standard config files for mkinitcpio ramdisk
    kernel26-icc.preset
    http://www.linuxdna.com/dna-2.6.33-intel64.patch)

makedepends=('icc')

md5sums=('c3883760b18d50e8d78819c54d579b00'
         '5c91374d56f115ba4324978d5b002711'
         'a4fd3c59751194bc118c70d1348436ab'
         'a307beb562eb7e68a6f3e2fb5fc216a3')

build() {
  cd ${srcdir}/linux-$_basekernel
  cat ../config.x86_64 >./.config
  patch -p1 < ../dna-2.6.33-intel64.patch || return 1
  if [ "${_kernelname}" != "" ]; then
    sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
  fi
  # get kernel version  
  make prepare
  # load configuration
  # Configure the kernel. Replace the line below with one of your choice.
  make menuconfig # CLI menu for configuration
  #make xconfig # X-based configuration
  #make oldconfig # using old config from previous kernel version
  # ... or manually edit .config
  ####################
  # stop here
  # this is useful to configure the kernel
  #msg "Stopping build"
  #return 1
  ####################
  yes "" | make config
  # build!
  make bzImage modules || return 1
}

package_kernel26-icc() {
  pkgdesc="The Linux Kernel and modules built with ICC"
  backup=(etc/mkinitcpio.d/${pkgname}.preset)
  depends=('coreutils' 'kernel26-icc-firmware>=2.6.33' 'module-init-tools' 'mkinitcpio>=0.5.20')
  install=kernel26-icc.install
  optdepends=('crda: to set the correct wireless channels of your country')
  KARCH=x86
  cd ${srcdir}/linux-$_basekernel
  # get kernel version
  _kernver="$(make kernelrelease)"
  mkdir -p ${pkgdir}/{lib/modules,boot}
  make INSTALL_MOD_PATH=${pkgdir} modules_install || return 1
  cp System.map ${pkgdir}/boot/System.map26${_kernelname}
  cp arch/$KARCH/boot/bzImage ${pkgdir}/boot/vmlinuz26${_kernelname}
  #  # add vmlinux
  install -m644 -D vmlinux ${pkgdir}/usr/src/linux-${_kernver}/vmlinux

  # install fallback mkinitcpio.conf file and preset file for kernel
  install -m644 -D ${srcdir}/kernel26.preset ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset || return 1
  # set correct depmod command for install
  sed \
    -e  "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" \
    -e  "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
    -i $startdir/kernel26.install
  sed \
    -e "s|source .*|source /etc/mkinitcpio.d/kernel26${_kernelname}.kver|g" \
    -e "s|default_image=.*|default_image=\"/boot/${pkgname}.img\"|g" \
    -e "s|fallback_image=.*|fallback_image=\"/boot/${pkgname}-fallback.img\"|g" \
    -i ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset

  echo -e "# DO NOT EDIT THIS FILE\nALL_kver='${_kernver}'" > ${pkgdir}/etc/mkinitcpio.d/${pkgname}.kver
  # remove build and source links
  rm -f ${pkgdir}/lib/modules/${_kernver}/{source,build}
  # remove the firmware
  rm -rf ${pkgdir}/lib/firmware
}

package_kernel26-icc-headers() {
  pkgdesc="Header files and scripts for building modules for kernel26-icc"
  mkdir -p ${pkgdir}/lib/modules/${_kernver}
  cd ${pkgdir}/lib/modules/${_kernver}
  ln -sf ../../../usr/src/linux-${_kernver} build
  cd ${srcdir}/linux-$_basekernel
  install -D -m644 Makefile \
    ${pkgdir}/usr/src/linux-${_kernver}/Makefile
  install -D -m644 kernel/Makefile \
    ${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile
  install -D -m644 .config \
    ${pkgdir}/usr/src/linux-${_kernver}/.config
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include

  for i in acpi asm-{generic,x86} config linux math-emu media net pcmcia scsi sound trace video; do
    cp -a include/$i ${pkgdir}/usr/src/linux-${_kernver}/include/
  done

  # copy arch includes for external modules
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/x86
  cp -a arch/x86/include ${pkgdir}/usr/src/linux-${_kernver}/arch/x86/

  # copy files necessary for later builds, like nvidia and vmware
  cp Module.symvers ${pkgdir}/usr/src/linux-${_kernver}
  cp -a scripts ${pkgdir}/usr/src/linux-${_kernver}
  # fix permissions on scripts dir
  chmod og-w -R ${pkgdir}/usr/src/linux-${_kernver}/scripts
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions

  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel

  cp arch/$KARCH/Makefile ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
  if [ "$CARCH" = "i686" ]; then
    cp arch/$KARCH/Makefile_32.cpu ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
  fi
  cp arch/$KARCH/kernel/asm-offsets.s ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel/

  # add headers for lirc package
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video
  cp drivers/media/video/*.h  ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/
  for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102 usbvideo zc0301; do
   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i
   cp -a drivers/media/video/$i/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i
  done
  # add docbook makefile
  install -D -m644 Documentation/DocBook/Makefile \
    ${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile
  # add dm headers
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
  cp drivers/md/*.h  ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
  # add inotify.h
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/linux
  cp include/linux/inotify.h ${pkgdir}/usr/src/linux-${_kernver}/include/linux/
  # add wireless headers
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/
  cp net/mac80211/*.h ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/
  # add dvb headers for external modules
  # in reference to:
  # http://bugs.archlinux.org/task/9912
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core
  cp drivers/media/dvb/dvb-core/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core/
  # add dvb headers for external modules
  # in reference to:
  # http://bugs.archlinux.org/task/11194
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/
  cp include/config/dvb/*.h ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/
  # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
  # in reference to:
  # http://bugs.archlinux.org/task/13146
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
  cp drivers/media/dvb/frontends/lgdt330x.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
  cp drivers/media/video/msp3400-driver.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
  # add xfs and shmem for aufs building
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs
  mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/mm
  cp fs/xfs/xfs_sb.h ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h
  # add headers vor virtualbox
  # in reference to:
  # http://bugs.archlinux.org/task/14568
  cp -a include/drm $pkgdir/usr/src/linux-${_kernver}/include/
  # add headers for broadcom wl
  # in reference to:
  # http://bugs.archlinux.org/task/14568
  cp -a include/trace $pkgdir/usr/src/linux-${_kernver}/include/
  # copy in Kconfig files
  for i in `find . -name "Kconfig*"`; do 
    mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/`echo $i | sed 's|/Kconfig.*||'`
    cp $i ${pkgdir}/usr/src/linux-${_kernver}/$i
  done

  cd ${pkgdir}/usr/src/linux-${_kernver}/include && ln -s asm-$KARCH asm
  # add header for aufs2-util
  cp -a ${srcdir}/linux-$_basekernel/include/asm-generic/bitsperlong.h ${pkgdir}/usr/src/linux-${_kernver}/include/asm/

  chown -R root.root ${pkgdir}/usr/src/linux-${_kernver}
  find ${pkgdir}/usr/src/linux-${_kernver} -type d -exec chmod 755 {} \;
  # remove unneeded architectures
  rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,mips,microblaze,mn10300,parisc,powerpc,ppc,s390,sh,sh64,sparc,sparc64,um,v850,xtensa}
}

package_kernel26-icc-firmware() {
  pkgdesc="The included firmware files of kernel26-icc"

  cd ${srcdir}/linux-$_basekernel
  make firmware || return 1
  make INSTALL_MOD_PATH=${pkgdir} firmware_install || return 1
}

kernel26-icc.preset

# mkinitcpio preset file for kernel26-icc

########################################
# DO NOT EDIT THIS LINE:
source /etc/mkinitcpio.d/kernel26-icc.kver
########################################
ALL_config="/etc/mkinitcpio.conf"

PRESETS=('default' 'fallback')

#default_config="/etc/mkinitcpio.conf"
default_image="/boot/kernel26-icc.img"
#default_options=""

#fallback_config="/etc/mkinitcpio.conf"
fallback_image="/boot/kernel26-icc-fallback.img"
fallback_options="-S autodetect"

kernel26-icc.install

# arg 1:  the new package version                               
# arg 2:  the old package version                               

KERNEL_NAME=-icc
KERNEL_VERSION=2.6.33-icc

post_install () {
  # updating module dependencies
  echo ">>> Updating module dependencies. Please wait ..."
  depmod $KERNEL_VERSION                                  
  # generate init ramdisks                                
  echo ">>> MKINITCPIO SETUP"                             
  echo ">>> ----------------"                             
  echo ">>> If you use LVM2, Encrypted root or software RAID,"
  echo ">>> Ensure you enable support in /etc/mkinitcpio.conf ."
  echo ">>> More information about mkinitcpio setup can be found here:"
  echo ">>> http://wiki.archlinux.org/index.php/Mkinitcpio"            
  echo ""                                                              
  echo ">>> Generating initial ramdisk, using mkinitcpio.  Please wait..."
  /sbin/mkinitcpio -p kernel26${KERNEL_NAME}                              
}                                                                         

post_upgrade() {
  pacman -Q grub &>/dev/null
  hasgrub=$?                
  pacman -Q grub2 &>/dev/null
  hasgrub2=$?                
  pacman -Q lilo &>/dev/null 
  haslilo=$?                 
  # reminder notices         
  if [ $haslilo -eq 0 ]; then
    echo ">>>"               
    if [ $hasgrub -eq 0 -o $hasgrub2 -eq 0 ]; then
      echo ">>> If you use the LILO bootloader, you should run 'lilo' before rebooting."
    else                                                                                
      echo ">>> You appear to be using the LILO bootloader. You should run"             
      echo ">>> 'lilo' before rebooting."                                               
    fi                                                                                  
    echo ">>>"                                                                          
  fi                                                                                    

  if grep "^[^#]*/boot" /etc/fstab 2>&1 >/dev/null; then
    if ! grep "/boot" /etc/mtab 2>&1 >/dev/null; then   
      echo "WARNING: /boot appears to be a seperate partition but is not mounted"
      echo "         This is most likely not what you want.  Please mount your /boot"
      echo "         partition and reinstall the kernel unless you are sure this is OK"
    fi                                                                                 
  fi                                                                                   

  if [ "`vercmp $2 2.6.13`" -lt 0 ]; then
    # important upgrade notice           
    echo ">>>"                           
    echo ">>> IMPORTANT KERNEL UPGRADE NOTICE"
    echo ">>> -------------------------------"
    echo ">>> As of kernel 2.6.13, DevFS is NO LONGER AVAILABLE!"
    echo ">>> If you still use DevFS, please make the transition to uDev before"
    echo ">>> rebooting.  If you really need to stay with DevFS for some reason,"
    echo ">>> then you can manually downgrade to an older version:"              
    echo ">>>"                                                                   
    echo ">>> # pacman -U http://archlinux.org/~judd/kernel/kernel26-scsi-2.6.12.2-1.pkg.tar.gz"
    echo ">>>"                                                                                  
    echo ">>> If you choose to downgrade, don't forget to add kernel26-scsi to your"            
    echo ">>> IgnorePkg list in /etc/pacman.conf"                                               
    echo ">>>"                                                                                  
    echo ">>> (NOTE: The following portion applies to uDev users as well!)"                     
    echo ">>>"                                                                                  
    echo ">>> If you use any DevFS paths in your GRUB menu.lst, then you will not"              
    echo ">>> be able to boot!  Change your root= parameter to use the classic"                 
    echo ">>> naming scheme."                                                                   
    echo ">>>"                                                                                  
    echo ">>> EXAMPLES:"                                                                        
    echo ">>> - change root=/dev/discs/disc0/part3 to root=/dev/sda3"                           
    echo ">>> - change root=/dev/md/0 to root=/dev/md0"                                         
    echo ">>>"                                                                                  
  fi                                                                                            
  # generate new init ramdisk                                                                   
  if [ "`vercmp $2 2.6.18`" -lt 0 ]; then                                                       
    echo ">>> --------------------------------------------------------------"                   
    echo ">>> |                          WARNING:                          |"                   
    echo ">>> |mkinitrd is not supported anymore in kernel >=2.6.18 series!|"                   
    echo ">>> |              Please change to Mkinitcpio setup.            |"                   
    echo ">>> --------------------------------------------------------------"                   
    echo ">>>"                                                                                  
  fi                                                                                            
  # updating module dependencies                                                                
  echo ">>> Updating module dependencies. Please wait ..."                                      
  depmod $KERNEL_VERSION                                                                        
  echo ">>> MKINITCPIO SETUP"                                                                   
  echo ">>> ----------------"                                                                   
  if [ "`vercmp $2 2.6.18`" -lt 0 ]; then                                                       
    echo ">>> Please change your bootloader config files:"                                      
    echo ">>> Grub: /boot/grub/menu.lst | Lilo: /etc/lilo.conf"                                 
    echo "------------------------------------------------"                                     
    echo "| - initrd26.img to kernel26${KERNEL_NAME}.img               |"                       
    echo "| - initrd26-full.img to kernel26${KERNEL_NAME}-fallback.img |"                       
    echo "------------------------------------------------"
  fi
  if [ "`vercmp $2 2.6.19`" -lt 0 ]; then
    echo ""
    echo ">>> New PATA/IDE subsystem - EXPERIMENTAL"
    echo ">>> ----------"
    echo ">>> To use the new pata drivers, change the 'ide' hook "
    echo ">>> to 'pata' in /etc/mkinicpio.conf HOOKS="
    echo ">>> The new system changes: /dev/hd? to /dev/sd?"
    echo ">>> Don't forget to modify GRUB, LILO and fstab to the"
    echo ">>> new naming system. "
    echo ">>> eg: hda3 --> sda3, hdc8 --> sdc8"
    echo ""
    echo ">>> piix/ata_piix (Intel chipsets) - IMPORTANT"
    echo "----------"
    echo ">>> If you have enabled ide/pata/sata HOOKs in /etc/mkinitcpio.conf"
    echo ">>> the 'ata_piix' module will be used."
    echo ">>> This may cause your devices to shift names, eg:"
    echo ">>> - IDE: devices from hd? to sd?"
    echo ">>> - SATA: sda might shift to sdc if you have 2 other disks on a PIIX IDE port."
    echo ">>> To check if this will affect you, check 'mkinitcpio -M' for piix/ata_piix"
    echo ""
  fi

  echo ">>> If you use LVM2, Encrypted root or software RAID,"
  echo ">>> Ensure you enable support in /etc/mkinitcpio.conf ."
  echo ">>> More information about mkinitcpio setup can be found here:"
  echo ">>> http://wiki.archlinux.org/index.php/Mkinitcpio"
  echo ""
  echo ">>> Generating initial ramdisk, using mkinitcpio.  Please wait..."
if [ "`vercmp $2 2.6.19`" -lt 0 ]; then
  /sbin/mkinitcpio -p kernel26${KERNEL_NAME} -m "ATTENTION:\nIf you get a kernel panic below
and are using an Intel chipset, append 'earlymodules=piix' to the
kernel commandline"
else
  /sbin/mkinitcpio -p kernel26${KERNEL_NAME}
fi
if [ "`vercmp $2 2.6.21`" -lt 0 ]; then
  echo ""
  echo "Important ACPI Information:"
  echo ">>> Since 2.6.20.7 all possible ACPI parts are modularized."
  echo ">>> The modules are located at:"
  echo ">>> /lib/modules/$(uname -r)/kernel/drivers/acpi"
  echo ">>> For more information about ACPI modules check this wiki page:"
  echo ">>> 'http://wiki.archlinux.org/index.php/ACPI_modules'"
fi
}

post_remove() {
  rm -f /boot/kernel26${KERNEL_NAME}.img
  rm -f /boot/kernel26${KERNEL_NAME}-fallback.img
}

Then there's of course the config, it's based on kernel26 at the moment,.

I'm building it now, to test. I had to install icc manually because the AUR package for icc didn't work for me. I had to install icc manually (run the installer), but that wasn't enough. Before makepkg, you have to add the icc to $PATH e.g.

PATH=$PATH:/opt/intel/Compiler/11.1/064/bin/intel64

and execute iccvars_intel64.sh which is in that folder.

Last edited by Fackamato (2010-02-25 23:43:38)

Offline

#2 2010-02-25 19:40:51

xduugu
Member
Registered: 2008-10-16
Posts: 292

Re: kernel26-icc compiled with Intel's compiler instead of gcc

Fackamato wrote:

Can't seem to upload it to AUR ("Invalid name: only lowercase letters are allowed.")

That's because the AUR does not support split PKGBUILDs.

Offline

#3 2010-02-25 20:35:40

sironitomas
Member
From: Cordoba, Argentina
Registered: 2009-11-28
Posts: 174
Website

Re: kernel26-icc compiled with Intel's compiler instead of gcc

This seems good! I read somewhere that the performance is so much better than compiling with GCC.

Last edited by sironitomas (2010-02-25 20:35:59)

Offline

#4 2010-02-25 20:38:42

Fackamato
Member
Registered: 2006-03-31
Posts: 579

Re: kernel26-icc compiled with Intel's compiler instead of gcc

sironitomas wrote:

This seems good! I read somewhere that the performance is so much better than compiling with GCC.

If it would work... it doesn't compile for me. It stopped at snd-i8x0 I think. Might retry later...

Offline

#5 2010-02-26 13:41:08

broch
Banned
From: L.A. California
Registered: 2006-11-13
Posts: 975

Re: kernel26-icc compiled with Intel's compiler instead of gcc

on 32-bit Arch it works nicely.
I patched vanilla sources only with bfs 314 though. I did not use DNA patch as it seems to be generated for 64-bit OS.
Also generating icc package from AUR required only minor changes to the PKGBUILD script and it worked well. I used the lates icc version which is 11.1.069-3

Maybe I will try to get zen compiled with icc.

I used icc for compiling kernels some time ago, but then I completely forgot about this. Thanks for reminding smile

Offline

#6 2010-02-26 13:45:18

Ashren
Member
From: Denmark
Registered: 2007-06-13
Posts: 1,229
Website

Re: kernel26-icc compiled with Intel's compiler instead of gcc

So there is a significant performance gain with ICC? Compilation time wise or?

Offline

#7 2010-02-26 13:51:46

Fackamato
Member
Registered: 2006-03-31
Posts: 579

Re: kernel26-icc compiled with Intel's compiler instead of gcc

Ashren wrote:

So there is a significant performance gain with ICC? Compilation time wise or?

I tried compiling again with a few tweaks, and everything compiles fine until it's actually making the bzImage. It complains about the compiler being 64-bit despite trying to compile a 32-bit binary, or something. I tried installing the 32-bit ICC but that didn't help (segfault lol).

Compile time wise it's slower than gcc, but the kernel should perform faster. If you check out the website (link in 1st post) you'll find benchmarks.

If anyone manages to compile this on x86_64, let me know!

Offline

#8 2010-02-26 14:09:44

broch
Banned
From: L.A. California
Registered: 2006-11-13
Posts: 975

Re: kernel26-icc compiled with Intel's compiler instead of gcc

Ashren wrote:

So there is a significant performance gain with ICC? Compilation time wise or?

icc kernel compiles in similar time as gcc kernel, or if there any differences these may be negligible. To be honest I was not really interested in compiling times (was doing somethig else as it takes ~12 min on my system to finish kernel compilation), but rather with overall kernel performance. This is not the same as OS performance, but I am planning to compile firefox with icc and maybe some other stuff (if I am bored enough).

If you have 32-bit OS (I have no idea how it will work on 64-bit), try it. I can't post PKGBUILD for 32-bit icc kernel because I don't use PKGBUILD for kernels or nvidia as I have found it limiting/cumbersome/unnecessary (while PKGBUILDs work great for anything else on Arch).
The only part really annoying is intel server speed. Downloading icc sources (710MB for 32-bit only) tahes two hours. If you try to get 32/64bit sources even longer (1GB download).

32-bit icc PKGBUILD package requires only one modification related to Release Notes otherwise makepkg will fail. Once installed export icc path, edit kernel Makefile and change one line related to compiler: change gcc to icc. You can also add some compiling optimizations.

Pretty easy if you did compile kernel before.

note added:
actually combination of icc and zen seems to have nice effect on desktop responsiveness (this is 2.6.33)

Last edited by broch (2010-02-26 19:54:57)

Offline

#9 2010-02-27 18:07:38

Fackamato
Member
Registered: 2006-03-31
Posts: 579

Re: kernel26-icc compiled with Intel's compiler instead of gcc

I've had some success, it seems to build all packages. I haven't tried booting them yet though.

Files available here.

If it doesn't compile, try to disable all the modules you don't really need. icc seems picky about some stuff.

edit: Server down, I'll upload the files elsewhere when I get home.

I can make it compile, but it panics at boot right away. I'm going to try the patch mentioned here: http://groups.google.com/group/linuxdna … 72e65ac1a6

Last edited by Fackamato (2010-03-02 11:15:24)

Offline

#10 2010-03-08 18:21:00

Marcel-
Member
From: Utrecht, NL
Registered: 2006-12-03
Posts: 266

Re: kernel26-icc compiled with Intel's compiler instead of gcc

broch wrote:

32-bit icc PKGBUILD package requires only one modification related to Release Notes otherwise makepkg will fail. Once installed export icc path, edit kernel Makefile and change one line related to compiler: change gcc to icc. You can also add some compiling optimizations.

Pretty easy if you did compile kernel before.

note added:
actually combination of icc and zen seems to have nice effect on desktop responsiveness (this is 2.6.33)

I'd like to try that, too.

Perhaps a stupid question, but where exactly did you change the compiler to ICC? Did you only change HOSTCC, HOSTCXX and CC in src/linux-2.6.33/Makefile or also in other places? And when (e.g., during 'make menuconfig')? I looked for this in the forums and wiki, but couldn't find an exact clue (and I don't want to bork the kernel by still compiling it half with GCC). Is it also possible to declare a C compiler in PKGBUILD?

By the way, would using ICC give a better performance on an Intel Atom N270 (1.6 GHz) processor than using GCC 4.5 snapshot with -march=atom?

Offline

#11 2010-03-08 19:18:37

broch
Banned
From: L.A. California
Registered: 2006-11-13
Posts: 975

Re: kernel26-icc compiled with Intel's compiler instead of gcc

yes, I modified kernel Makefile:
HOSTCC       = icc
HOSTCXX      = icpc
HOSTCFLAGS   = -Wall -w -Wstrict-prototypes -O3 -fomit-frame-pointer
HOSTCFLAGS   = -w -O3 -fomit-frame-pointer
HOSTCXXFLAGS = -O3

the above is a first step.

If this will work, take look at http://www.linuxdna.com/dna-2.6.33-rc7- … 64-3.patch (64-bit)
and also
http://www.linuxdna.com/dna-32bit-icc-2.6.30.patch

I don't have any experience with atom. Sorry.
I hope this will help

Offline

#12 2010-03-08 22:06:00

MP2E
Member
Registered: 2009-09-05
Posts: 115

Re: kernel26-icc compiled with Intel's compiler instead of gcc

This is very interesting! I think I'm going to reinstall the Intel C Compiler and give this a spin.. Who knows? Maybe I'll make a kernel26-ck-icc PKGBUILD for the AUR too! tongue

(Unless someone beats me to it!)

Last edited by MP2E (2010-03-08 22:06:34)


17:23 < ConSiGno> yeah baby I release the source code with your mom every night
17:24 < ConSiGno> you could call them nightly builds if you know what I mean

Offline

#13 2010-03-08 22:29:51

Fackamato
Member
Registered: 2006-03-31
Posts: 579

Re: kernel26-icc compiled with Intel's compiler instead of gcc

MP2E wrote:

This is very interesting! I think I'm going to reinstall the Intel C Compiler and give this a spin.. Who knows? Maybe I'll make a kernel26-ck-icc PKGBUILD for the AUR too! tongue

(Unless someone beats me to it!)

The ck patch applies fine, and -icc-ck boots too. My screen goes blank (as in turned off) when the Arch init begins though, haven't messed with it since.

Offline

#14 2010-03-08 22:31:52

Marcel-
Member
From: Utrecht, NL
Registered: 2006-12-03
Posts: 266

Re: kernel26-icc compiled with Intel's compiler instead of gcc

Thanks, broch! You changed CC in the root linux-2.6.33/Makefile, too, didn't you?

And of course I could have looked at the LinuxDNA patchsets. I'll compare the Atom 64-bit settings with the 32-bit ones of the older kernel and create my own patch (which I will probably publish somewhere).

The only thing I don't know for sure is the following: I want a separate kernel image, alongside the default zen package, with its own kernel image and module directory. Do I need to change all instances of "kernel26-zen" to "kernel26-zen-gcc4.5", including file names like kernel26-zen-gcc4.5, or is it sufficient to change CONFIG_LOCALVERSION in config to something like "-ZEN-gcc4.5"?

EDIT: I think the answer to my last question can be found in the Wiki article [wiki]Custom Kernel Compilation with ABS[/wiki].

EDIT 2: I shouldn't have bluntly replaced several occurences of "kernel26-zen" with "kernel26-zen-gcc4.5", I get lots of errors now when installing the kernel using pacman -U (more or less caused because mkinitcpio is automatically called with "-k 2.6.33-ZEN" instead of "-k 2.6.33-ZEN-gcc4.5"). For the record, I wanted to test the zen kernel with GCC 4.5 first.

Last edited by Marcel- (2010-03-09 01:57:02)

Offline

#15 2010-04-05 17:30:51

quarkup
Member
From: Portugal
Registered: 2008-09-07
Posts: 497
Website

Re: kernel26-icc compiled with Intel's compiler instead of gcc

@Marcel- then check for the .install and the .preset files and change the occurrences of "2.6.33-ZEN" to "2.6.33-ZEN-gcc4.5"


If people do not believe that mathematics is simple, it is only because they do not realize how complicated life is.
Simplicity is the ultimate sophistication.

Offline

#16 2010-04-05 19:27:09

Marcel-
Member
From: Utrecht, NL
Registered: 2006-12-03
Posts: 266

Re: kernel26-icc compiled with Intel's compiler instead of gcc

Thanks for this tip, but I remember I already did that, but there were also 2.6.33-ZEN directories installed alongside 2.6.33-ZEN-gcc4.5 dirs, e.g., in /usr/src and /lib/modules.

But I'm fine with it now, I just use the default dirs now of the ZEN-git package.

Offline

#17 2010-04-13 14:24:29

broch
Banned
From: L.A. California
Registered: 2006-11-13
Posts: 975

Re: kernel26-icc compiled with Intel's compiler instead of gcc

I have got icc-dna kernel (32-bit) working:
I patched vanilla 2.6.33.2 with:
patch-2.6.33-ck1
dna-2.6.33-intel32-1.patch

then I run:
source /opt/intel/Compiler/11.1/069/bin/iccvars.sh ia32

followed by:
make AR=xiar LD=xild && make AR=xiar LD=xild modules_install

after kernel build/installation, I also installed nvidia driver (works if you "cheat" nvidia installer).
Using it right now.
One thing that does not work/compile
iwl3945 either as module or build-in
compilation fails on iwl-scan.o
but aside from this, everything is running smoothly.

so currently I have kernel and firefox compiled with icc.

Last edited by broch (2010-04-13 14:30:05)

Offline

#18 2010-04-13 14:30:18

sironitomas
Member
From: Cordoba, Argentina
Registered: 2009-11-28
Posts: 174
Website

Re: kernel26-icc compiled with Intel's compiler instead of gcc

@broch Is there any notable performance improvement?

Offline

#19 2010-04-13 18:31:16

broch
Banned
From: L.A. California
Registered: 2006-11-13
Posts: 975

Re: kernel26-icc compiled with Intel's compiler instead of gcc

yes... just reached warp speed wink
some things are running "better" but in terms of numbers I only noticed that icc kernel uses cache more than gcc, so "improvement" may be related to memory usage (if true).
If I will have time I will run some heavy stuff over the weekend, then I will know how much (if at all) better icc kernel is.

Offline

#20 2010-04-14 02:18:13

sironitomas
Member
From: Cordoba, Argentina
Registered: 2009-11-28
Posts: 174
Website

Re: kernel26-icc compiled with Intel's compiler instead of gcc

Ok... if you reached warp speed, beware of the blackouts that might happen! tongue

Offline

#21 2010-04-22 04:15:44

broch
Banned
From: L.A. California
Registered: 2006-11-13
Posts: 975

Re: kernel26-icc compiled with Intel's compiler instead of gcc

sorted out wireless module compilation thanks to LinuxDNA maintainers.
Now both 2.6.33.2-ck1 and 2.6.34-rc5-git1 are compiled with ICC.
Everything is working very well. ICC seems to be a good thing for desktops as even under heavy load system is responsive and smooth.
Boot time is obviously without any changes (in the case that someone would expect any).
It looks like this is a keeper (still being cautious in terms of stability though).

Offline

#22 2010-08-01 13:54:20

Marcel-
Member
From: Utrecht, NL
Registered: 2006-12-03
Posts: 266

Re: kernel26-icc compiled with Intel's compiler instead of gcc

@broch: Do you still use a kernel compiled with ICC?

If so, what are your experiences on the long term, especially regarding stability?

Offline

#23 2010-08-03 15:38:15

broch
Banned
From: L.A. California
Registered: 2006-11-13
Posts: 975

Re: kernel26-icc compiled with Intel's compiler instead of gcc

@Marcel

last one I used was 2.6.34-rc5
2.6.34.1 panics and never boots.

well in terms of stability, it works without any issues (once it boots of course). I never tried to keep it on line longer than 2-3 weeks (personal laptop) because usually within 2-3 weeks I was testing new kernel or something else that required re-boot.

Speed: as published there are things that will work faster on icc but for day-by-day usage I don't see much of boost from icc.
My feeling is that as in the case of firefox-pgo this is mostly placebo effect and not real speed improvements.


hope this answers your questions. If you have something more specific let me know.

broch

Offline

#24 2011-01-18 13:57:52

W.F.Cody
Member
From: Ghent
Registered: 2010-11-18
Posts: 155

Re: kernel26-icc compiled with Intel's compiler instead of gcc

Is this package available in AUR? I could not find it...


My AUR packages
Any package of mine is up for grabs. If you think you could mantain it better - just contact me!

Offline

#25 2011-01-21 07:03:33

jasonwryan
Anarchist
From: .nz
Registered: 2009-05-09
Posts: 30,426
Website

Re: kernel26-icc compiled with Intel's compiler instead of gcc

See post #2

Please don't necrobump: https://wiki.archlinux.org/index.php/Fo … Bumping.27

Closing


Arch + dwm   •   Mercurial repos  •   Surfraw

Registered Linux User #482438

Offline

Board footer

Powered by FluxBB