- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对“-gencode”语句中的“code=sm_X”选项有点困惑。
一个例子:NVCC 编译器选项有什么作用
-gencode arch=compute_13,code=sm_13
嵌入库中?
只有机器代码(cubin 代码)用于 CC 1.3 的 GPU,或者还有用于 CC 1.3 的 GPU 的 PTX 代码?
在“Maxwell 兼容性指南”中,声明“只有由‘code=’子句指定的后端目标版本将保留在生成的二进制文件中”。
据此,我可以推断给定的编译器选项仅嵌入用于 GPU 的机器代码与 CC 1.3 和KHÔNG PTX 代码。这意味着它不可能运行这个库,例如在 Maxwell 生成卡上,因为库中没有嵌入 PTX 代码,机器代码可以从中“即时”(JIT) 编译。
另一方面,在 NVIDIA 的 GTC 2013 演示文稿“CUDA 工具包作为应用程序构建工具的介绍”中指出,“-gencode arch=compute_13,code=sm_13”对于所有具有 CC 的 GPU 就足够了>= 1.3,并且对于 CC > 1.3 的 GPU,使用此编译器选项,机器代码是从 PTX 代码进行 JIT 编译的。因此,在我看来,Maxwell 兼容性指南中提供的信息和这个 GTC 演示文稿是相互矛盾的。
1 Câu trả lời
nvcc
有多种格式,可以通过这些格式指定代码生成选项。阅读 section 6 of the nvcc manual可能具有指导意义。
使用这种格式时:
nvcc -gencode arch=compute_13,code=sm_13 ...
chỉ một sm_13 (cc 1.3) 设备的 SASS 代码将被保留。可执行对象中不会保留 PTX,因此代码只能在能够运行 cc1.3 SASS 的设备上运行.
使用上述命令格式,为了将 PTX 版本的源代码嵌入到可执行对象中,有必要为提供给 code= 的选项使用虚拟架构规范 ...
。由于这种特殊格式(使用 -gencode
)不允许在单个开关中指定多个目标,我们必须多次将 -gencode
开关传递给 nvcc,每个一个我们希望嵌入到可执行对象中的目标。
因此扩展上面的示例,我们可以使用以下内容:
nvcc -gencode arch=compute_13,code=sm_13 -gencode arch=compute_13,code=compute_13 ...
这会将 cc1.3 SASS(通过第一个 gencode
开关)和 cc1.3 PTX(通过第二个 gencode
开关)嵌入到可执行文件中。能够直接运行 cc1.3 SASS 代码的设备将使用它。其他设备(计算能力大于 cc 1.3)将由驱动程序执行 JIT 编译步骤,以将 cc1.3 PTX 代码转换为具有适合所讨论设备的体系结构的 SASS 代码。
我同意 the GTC 2013 presentation (例如幻灯片 37)似乎表明
nvcc -gencode arch=compute_13,code=sm_13 ...
足以满足所有计算能力为 1.3 或更高的设备。事实并非如此,这很容易证明。如果您使用上述格式编译代码,并尝试在 cc 2.0 设备上运行它,它将失败并出现与代码中的任何一个或多个内核相关的“无效设备功能”错误。
同样,nvcc
有多种命令格式和指定代码生成的“快捷方式”。一些比较简单的,比如:
nvcc -arch=sm_13 ...
将在可执行对象中嵌入代码的 PTX 和 SASS 版本,从而实现所建议的那种前向兼容性。
关于cuda - 'code=sm_X' 是否仅嵌入二进制(cubin)代码,或 PTX 代码,或两者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26232500/
Tôi có một câu lệnh if trông như thế này if (not(fullpath.lower().endswith(".pdf")) or not (fullpath.lower().endswith(tup
Tuy nhiên, trong PHP, bạn có thể: chỉ xuất hiện nếu $foo là đúng. chỉ xuất hiện nếu $foo là sai. Trong Javascript, có thể
XML có nhiều lợi ích. Nó có thể được cả máy và người đọc, có định dạng chuẩn và được sử dụng rộng rãi. Nhưng nó cũng có một số nhược điểm. Cách này khá dài dòng và không hiệu quả để truyền tải lượng dữ liệu lớn. Một trong những khía cạnh hữu ích nhất của XML là ngôn ngữ lược đồ của nó. Sử dụng chế độ này, bạn có thể
Sau khi sử dụng SQL2000 trong một thời gian dài, tôi thực sự không hiểu sâu về Common Table Expressions. Câu trả lời tôi đưa ra ở đây (#4025380) và ở đây (#4018793) đi ngược lại xu hướng vì chúng không sử dụng CTE. Tôi đánh giá cao họ
Tôi có một ứng dụng: void deleteObj(id){ MyObj obj = getObjById(id); if (obj == null) { throw n
Mã của tôi như sau. Có lẽ tôi đã sử dụng nó nhiều lần theo cách tương tự, nghĩa là nói một cách đơn giản, tôi đang quản lý các phiên và giao dịch theo cách này: List users = null; try{ sess
Khi phát triển ứng dụng web J2EE, tôi thường sắp xếp cấu trúc gói của mình theo cách sau com.jameselsey.. Bộ điều khiển - Bộ điều khiển/Hành động nằm ở đây Dịch vụ - Các lớp dịch vụ giao dịch, được gọi bởi bộ điều khiển Miền - Các lớp/đối tượng miền của tôi được ứng dụng sử dụng D
Đây chỉ là sự tò mò hơn là bất kỳ câu hỏi quan trọng nào, nhưng tôi chỉ thắc mắc về đoạn trích sau từ tài liệu memmove: Việc sao chép diễn ra như thể một bộ đệm trung gian được sử dụng
Nén đường dẫn bao gồm việc chỉ định gốc làm nút cha mới của mọi nút trên đường dẫn - điều này có thể hạ cấp bậc của gốc và có khả năng hạ cấp bậc của tất cả các nút trên đường dẫn. Có cách nào để khắc phục lỗi này không? Có cần thiết phải giải quyết vấn đề này không? Hoặc có thể coi thứ hạng là giới hạn trên của chiều cao cây thay vì chiều cao chính xác? Cảm ơn
Tôi có hai lớp, lớp A và lớp B. A là lớp cha của B và tôi có một hàm nhận một con trỏ tới một lớp có kiểu A, kiểm tra xem lớp đó có phải là kiểu B không và nếu có thì sẽ gọi một hàm khác nhận một con trỏ tới một lớp có kiểu B. Khi một hàm gọi một hàm khác, tôi
Có cách nào để valgrind sử dụng nhiều bộ xử lý không? Tôi đang thực hiện một số phân tích nút thắt cổ chai bằng cách sử dụng callgrind của valgrind và nhận thấy rằng hành vi sử dụng tài nguyên trong ứng dụng của tôi khác với những gì tôi thấy trong valgrind/callgrind
Giả sử chúng ta muốn sử dụng ReaderT[(a,b)] trên monad Maybe và sau đó chúng ta muốn thực hiện tra cứu trong danh sách. Bây giờ, một cách tiếp cận đơn giản và không phổ biến là: Khả năng đầu tiên là tìm một = ReaderT (tra cứu
Có vẻ như có gì đó không ổn với mã của tôi. Những gì tôi cần nói là: if ( $('html').attr('lang').val() == 'fr-FR' ) { // làm điều này } else { // làm
Theo bài viết này (tháng 4 năm 2018), AKS có khả năng đặt các pod một cách thông minh trên các miền lỗi khi chạy trong một tập hợp khả dụng, nhưng vẫn chưa tính đến các miền cập nhật. Liệu có thể đưa pod vào AKS bằng cách sử dụng miền cập nhật sớm không? Câu trả lời hay nhất: Khi bạn thiết lập một cụm, nó sẽ tự động
khóa học | phần | loại comart2 : bsit201 : bài học comart2 :
Tôi đang phát triển SDK của riêng mình, và SDK này lại phụ thuộc vào một số SDK của bên thứ 3. Ví dụ - OkHttp. Tôi có nên thêm OkHttp vào build.gradle của mình hay để người dùng SDK của tôi đưa nó vào không? trong trường hợp này,
Khi Rust ngày càng được hoàn thiện hơn, tôi bắt đầu thấy hứng thú với nó. Tôi thích thực tế là nó hỗ trợ các kiểu dữ liệu đại số, đặc biệt là các kiểu dữ liệu khớp nhau, nhưng bạn có suy nghĩ gì về các thành ngữ chức năng khác không? Ví dụ, có một tập hợp các hàm lọc/ánh xạ/giảm chuẩn trong thư viện chuẩn không và quan trọng hơn là bạn có thể
đóng cửa. Câu hỏi này không đáp ứng được hướng dẫn của Stack Overflow. Hiện tại câu hỏi này không chấp nhận câu trả lời. Câu hỏi này có vẻ không liên quan đến lập trình trong phạm vi được xác định trong trung tâm trợ giúp. . Đã đóng cửa cách đây 9 năm. Cải thiện
Tôi đang nghiên cứu về đối tượng trong PHP. Tất cả các ví dụ tôi đã thấy đều sử dụng hàm tạo đối tượng ngay cả trên chính đối tượng của chúng. PHP có buộc bạn phải làm điều này không? Nếu có, tại sao? Ví dụ: firstname = $firstname;
...so với mảng kết hợp? Mảng kết hợp có chiếm nhiều bộ nhớ hơn không? $arr = mảng(1, 1, 1); $arr[10] = 1; $arr[] = 1; // <- chỉ số là 11; thực hiện
Tôi là một lập trình viên xuất sắc, rất giỏi!