cudapro case study notefloat4 alignment and class案例研究对齐类rev2_第1页
cudapro case study notefloat4 alignment and class案例研究对齐类rev2_第2页
cudapro case study notefloat4 alignment and class案例研究对齐类rev2_第3页
cudapro case study notefloat4 alignment and class案例研究对齐类rev2_第4页
cudapro case study notefloat4 alignment and class案例研究对齐类rev2_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

iceCUDAProfessional(45157483)QQ群讨论整理而来。简要经过和结论由iceiceCUDAProfessional(45157483)QQ群讨论整理而来。简要经过和结论由iceice不保证该总结100%正确,2012-5-52012-5-52012-5-5第二版修正版(rev2.1)事情经过:[北京]-石头(736183739classcppcu为“float416vsgcc4字节gcc的16B;32-bit.c/.cppVC下,float44B;--64bit的.c/.cpp,VC下,float416B。)iceprogrammingguide4.2中也分别提到过相关内容。结论:class/structdevicehost端由于对齐约定不结论:class/structdevicehost端由于对齐约定不hostcode用.cuNVCC会在将host端code交给hostcompilerNVCChostcodestruct实际上是带有attribute的对齐的属性的(某些情况下可能是作为编译器的对齐参数,例如-malign-double,在-m32gcc下的时候(hostcompilerNVCC)如果是不能联合编译的情况(如C#driverAPI,那么请手工根据对应的如果是NVCCNVCC自带的align(n),hostcompilerVCGCC3264位目标代32bitVC4B)VC))classA{structBb1;structB))))b2)BstructB{floata;floatb;)ba[北京]-石头(736183739)9:33:00))bcca[北京]-石头(736183739)9:33:36)))))))))))))cuCPPConfiguration))cuhost))CuCPPConfiguration)))))))))))))))))LoadCPP))cuConfiguration280)CPP272))nvccC++[北京]-石头(736183739)10:34:10))))))))>[北京]-石头(736183739)))))nvcc24*4)VC23*4))B假如如下定义classB{Aa;A)CPPB)B.bB24)cu)bB25))nvccfloat4[北京]-石头(736183739)10:55:05)CPPfloat)cu24*4)CPP23*4)))4.2programmingguideAppendixD.2.5.6[深圳]风辰<ily152832912@>11:04:524.2))>)>))>float416vsgcc4>gccattribute16vs琪琪指出:“--具体说在gcc上是attribute在vc上是attribute((align(n))”“--nvcc提供的align(n)宏,ice5/5/201210:49:56NVCC编译的类/CPU上编译的同一个定义的类/--NVCChost编译器联合编译的时候,nvcchost编译器的默windowsVC.linuxgcc.琪琪14:35:14host编译器的默认行为而模拟的。琪琪14:35:33C显然不属于这个默认范围内。琪琪14:35:40VC琪琪14:41:14vc上attribute((align(x))琪琪14:42:18gcc上会自动翻译为attribute((aligned(x))琪琪14:42:30或者直接用NV提供的跨平台的 ice琪琪14:49:32(14:33:19的引用ice琪琪14:50:10琪琪14:51:03(如果真看到。可以考虑上文的alignice14:53:40ice在没有指定任何align的情况下,琪琪14:53:47VCnvcc2者保持一致了。琪琪14:54:18实际上,联合编译的情况下,hoststructnvcc的对齐方式.琪琪14:54:53Cnvcc进行联合编译的语言,琪琪14:54:57琪琪14:55:14ice14:56:08琪琪14:55:22iceVS环境琪琪14:55:51nvccC++编译器实际上。琪琪14:55:56VC的话,琪琪14:55:59linux下的话,琪琪14:56:06gccnvccice(linux+自己写的make)琪琪14:56:08ice2:56:54(linux+自己写的--只要是.cunvcc的,都不会出现问题的。琪琪14:56:31iceice14:57:19iceicecucpp里面各有一份实现琪琪14:57:09显然.cpp里的和.cu的不一致了。琪琪14:57:23.cppnvcc的。琪琪14:57:43这可能会导致.cpp里的对齐没有.cuiceicedriverapi而不得已分开外,琪琪14:58:24任何调用/使用.cu里的东西的,都推荐在另外一个.cu里。琪琪14:58:33琪琪14:58:38琪琪14:58:42ice(cppOK了)琪琪14:58:55在一个.cu那么一定要在另外的一个.cu里使用,琪琪14:59:08而不能在.cpp/.c里。琪琪14:59:24(driverapi除外,可以考虑alignNVCC需要的对齐hostcodestructhostcodestructnvccdevicecode一致。15:10:43vc/gccnvcc靠拢。15:10:46Over)--正常。谁让他是.cpp而不是.cu呢。这导致文件不会被nvcc过一遍的。15:17:03经过讨论,风辰认为“float416vcgcc432cpp/c里才会有这个问题)iceicestructcharfloat4前以测试可能的对齐方式。15:18:23ice.cuhostcode:(float416B)ice15:20:0632-bit.c/.cpp(float416B)ice15:20:0632-bit.c/.cpp(float44B)ice15:21:46--64bit的.c/.cpp--float432VC的情况下发生。15:22:3764bitVC"gccattribute16vs也应该有相关的设置”--gcc上是attribute((aligned(nvc上是attributeice--nvcc提供的align(nice15:27:49class/structdeviceclass/structdevicehost端由于对齐约定不ice15:28:41ice--hostcode用.cu的话,怎么用都无需考虑。15:28:41--只怕你在.cpp之类的里面用。nvcchostcode不是的。.cu里面的host代码是被nvcc过滤并做一些它认为必要的修改后才交给hostcompiler的。15:30:20)--嗯嗯。是的。还有一些石头这样的,改成.cu只有好处。15:30:4915:30:54iceice15:31:19--即改成.cunvcc先过一遍。15:31:22ice15:32:18嗯嗯。Oiceicecu里面,自动混合编译,总是没问题的。15:32:09iceice

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论