หลังจากที่ลองเขียนโปรแกรมเล่น(ด้วยภาษา C)โดยใช้ CUDA สักพักแล้วเกิดของขึ้นร้อนวิชาอยากจะลองเอาไปใช้งานจริงแต่มันก็ติดว่างานส่วนใหญ่ที่ทำจะใช้ Mathematica เป็นหลัก หลายคำสั่งหรือfunction ที่เขียนขึ้นเองนั้นก็อยู่ใน Mathematica หมด ก็เลยคิดว่าแล้วจะเอาfunction ที่เขียนด้วย CUDA ไปใช้ใน Mathematica ยังไง หลังจากงมอยู่พักใหญ่ก็พบว่า Mathematica ตั้งแต่เวอร์ชั่น 8 เป็นต้นมาสามารถที่จะใช้ความสามารถของ CUDA ได้โดย package ที่ชื่อ CUDALink ซึ่งมีมาด้วยกับตัว Mathematica แล้ว วิธีการก็เพียงโหลดpackage นี้ <<CUDALink` จากนั้นเราก็สามารถที่จะเรียกfunction ที่เราเขียนเข้าไปได้ด้วยคำสั่ง CUDAFunctionLoad ครับเช่น จะว่าไปแล้ว CUDAFunctionLoad นี่มันก็เจ๋งดีครับทำให้ทุกอย่างง่ายไปหมด แต่ก็ยังมีเรื่องที่ต้องปวดหัวหรือระวังเกี่ยวกับชนิดของตัวแปรครับ ดูรายละเอียดเพิ่มเติมได้ที่ http://reference.wolfram.com/mathematica/CUDALink/ref/CUDAFunctionLoad.html
Like this:
Like Loading...
ทดลองเปรียบเทียบว่าถ้าใช้ GPU คำนวณใน Mathematica จะเร็วขึ้นจากที่ใช้ CPU มากน้อยเท่าใด เครื่องที่ใช้ทดสอบคือ Dell Precision T5500 , CPU Xeon 2.66 GHz X5650 RAM 12GB, Windows 7 64-Bit, NVIDIA Quadro 4000, Mathematica 8.0.4 คำสั่งที่ใช้ครับ a=RandomReal[{0,1},{2048,2048}]; b=RandomReal[{0,1},{2048,2048}]; AbsoluteTiming[Do[CUDADot[a,b];,{100}];] AbsoluteTiming[Do[Dot[a,b];,{100}];] c=RandomReal[{0,1},{512,512}]; AbsoluteTiming[Do[CUDAFourier[c];,{100}]] AbsoluteTiming[Do[Fourier[c];,{100}]]
Like this:
Like Loading...
เครื่องที่ผมใช้งานลง Windows 7 64 bits พร้อมกับ Visual C++ Express 2010 กับ Windows SDK 7.1 และ NVIDIA SDKs Toolkit แล้วมีปัญหาในการ compile library ใน Mathematica ด้วย CreateLibrary หรือ CreateExecuteable กับ NVCCCompiler ใน Mathematica ซึ่งมันจะขึ้น $Failed หลังจากที่งมหาคำตอบนี้อยู่นานก็พบว่า ไฟล์ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat” จะมีการเรียก ไฟล์ C:\Program Files (x86)\Microsoft Visual Studio 10.0\vc\bin\amd64\vcvars64.bat ซึ่งมันไม่ได้ติดตั้งมาด้วยกับตัว compiler ดังนั้นผมเลยสร้างไฟล์ vcvars64.bat มาใหม่โดยใส่บรรทัดนี้ลงไปครับ CALL […]
Like this:
Like Loading...
พอดีว่าได้เครื่อง Dell Precision T1600 มาทำงานด้าน Molecular Simulation เครื่องมีการ์ดจอที่สนับสนุน CUDA มาด้วยคือ Nvidia Quadro 2000 หลังจากติดตั้ง Scientifc Linux (SL6.1) เสร็จแล้ว ก็ทำการเพิ่ม Repository จาก elrepo.org เข้าไป ตามนี้ rpm –import http://elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm จากนั้นก็ติดตั้ง package ชื่อ kmod-nvidia yum –disablerepo=\* –enablerepo=elrepo install kmod-nvidia แล้วก็ reboot เครื่องใหม่ เป็นอันเสร็จพิธี ลอง render โครงสร้างของโปรตีนโดยใช้ VMD ปรากฏว่าเร็วมากอย่างเห็นได้ชัด
Like this:
Like Loading...