├── LICENSE ├── README.md ├── bin └── x86_64_Linux │ ├── LICENSE │ └── cuda-checkpoint ├── images ├── app.png ├── copy-in.png ├── copy-out.png ├── lock.png ├── moon.png ├── off.png ├── on.png ├── proc.png ├── sun.png ├── unlock.png └── vm.png └── src ├── counter.cu ├── example.sh └── r570-features.c /LICENSE: -------------------------------------------------------------------------------- 1 | End User License Agreement 2 | -------------------------- 3 | 4 | NVIDIA Software License Agreement and CUDA Supplement to 5 | Software License Agreement. Last updated: October 8, 2021 6 | 7 | The CUDA Toolkit End User License Agreement applies to the 8 | NVIDIA CUDA Toolkit, the NVIDIA CUDA Samples, the NVIDIA 9 | Display Driver, NVIDIA Nsight tools (Visual Studio Edition), 10 | and the associated documentation on CUDA APIs, programming 11 | model and development tools. If you do not agree with the 12 | terms and conditions of the license agreement, then do not 13 | download or use the software. 14 | 15 | Last updated: October 8, 2021. 16 | 17 | 18 | Preface 19 | ------- 20 | 21 | The Software License Agreement in Chapter 1 and the Supplement 22 | in Chapter 2 contain license terms and conditions that govern 23 | the use of NVIDIA software. By accepting this agreement, you 24 | agree to comply with all the terms and conditions applicable 25 | to the product(s) included herein. 26 | 27 | 28 | NVIDIA Driver 29 | 30 | 31 | Description 32 | 33 | This package contains the operating system driver and 34 | fundamental system software components for NVIDIA GPUs. 35 | 36 | 37 | NVIDIA CUDA Toolkit 38 | 39 | 40 | Description 41 | 42 | The NVIDIA CUDA Toolkit provides command-line and graphical 43 | tools for building, debugging and optimizing the performance 44 | of applications accelerated by NVIDIA GPUs, runtime and math 45 | libraries, and documentation including programming guides, 46 | user manuals, and API references. 47 | 48 | 49 | Default Install Location of CUDA Toolkit 50 | 51 | Windows platform: 52 | 53 | %ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v#.# 54 | 55 | Linux platform: 56 | 57 | /usr/local/cuda-#.# 58 | 59 | Mac platform: 60 | 61 | /Developer/NVIDIA/CUDA-#.# 62 | 63 | 64 | NVIDIA CUDA Samples 65 | 66 | 67 | Description 68 | 69 | CUDA Samples are now located in 70 | https://github.com/nvidia/cuda-samples, which includes 71 | instructions for obtaining, building, and running the samples. 72 | They are no longer included in the CUDA toolkit. 73 | 74 | 75 | NVIDIA Nsight Visual Studio Edition (Windows only) 76 | 77 | 78 | Description 79 | 80 | NVIDIA Nsight Development Platform, Visual Studio Edition is a 81 | development environment integrated into Microsoft Visual 82 | Studio that provides tools for debugging, profiling, analyzing 83 | and optimizing your GPU computing and graphics applications. 84 | 85 | 86 | Default Install Location of Nsight Visual Studio Edition 87 | 88 | Windows platform: 89 | 90 | %ProgramFiles(x86)%\NVIDIA Corporation\Nsight Visual Studio Edition #.# 91 | 92 | 93 | 1. License Agreement for NVIDIA Software Development Kits 94 | --------------------------------------------------------- 95 | 96 | 97 | Important Notice—Read before downloading, installing, 98 | copying or using the licensed software: 99 | ------------------------------------------------------- 100 | 101 | This license agreement, including exhibits attached 102 | ("Agreement”) is a legal agreement between you and NVIDIA 103 | Corporation ("NVIDIA") and governs your use of a NVIDIA 104 | software development kit (“SDK”). 105 | 106 | Each SDK has its own set of software and materials, but here 107 | is a description of the types of items that may be included in 108 | a SDK: source code, header files, APIs, data sets and assets 109 | (examples include images, textures, models, scenes, videos, 110 | native API input/output files), binary software, sample code, 111 | libraries, utility programs, programming code and 112 | documentation. 113 | 114 | This Agreement can be accepted only by an adult of legal age 115 | of majority in the country in which the SDK is used. 116 | 117 | If you are entering into this Agreement on behalf of a company 118 | or other legal entity, you represent that you have the legal 119 | authority to bind the entity to this Agreement, in which case 120 | “you” will mean the entity you represent. 121 | 122 | If you don’t have the required age or authority to accept 123 | this Agreement, or if you don’t accept all the terms and 124 | conditions of this Agreement, do not download, install or use 125 | the SDK. 126 | 127 | You agree to use the SDK only for purposes that are permitted 128 | by (a) this Agreement, and (b) any applicable law, regulation 129 | or generally accepted practices or guidelines in the relevant 130 | jurisdictions. 131 | 132 | 133 | 1.1. License 134 | 135 | 136 | 1.1.1. License Grant 137 | 138 | Subject to the terms of this Agreement, NVIDIA hereby grants 139 | you a non-exclusive, non-transferable license, without the 140 | right to sublicense (except as expressly provided in this 141 | Agreement) to: 142 | 143 | 1. Install and use the SDK, 144 | 145 | 2. Modify and create derivative works of sample source code 146 | delivered in the SDK, and 147 | 148 | 3. Distribute those portions of the SDK that are identified 149 | in this Agreement as distributable, as incorporated in 150 | object code format into a software application that meets 151 | the distribution requirements indicated in this Agreement. 152 | 153 | 154 | 1.1.2. Distribution Requirements 155 | 156 | These are the distribution requirements for you to exercise 157 | the distribution grant: 158 | 159 | 1. Your application must have material additional 160 | functionality, beyond the included portions of the SDK. 161 | 162 | 2. The distributable portions of the SDK shall only be 163 | accessed by your application. 164 | 165 | 3. The following notice shall be included in modifications 166 | and derivative works of sample source code distributed: 167 | “This software contains source code provided by NVIDIA 168 | Corporation.” 169 | 170 | 4. Unless a developer tool is identified in this Agreement 171 | as distributable, it is delivered for your internal use 172 | only. 173 | 174 | 5. The terms under which you distribute your application 175 | must be consistent with the terms of this Agreement, 176 | including (without limitation) terms relating to the 177 | license grant and license restrictions and protection of 178 | NVIDIA’s intellectual property rights. Additionally, you 179 | agree that you will protect the privacy, security and 180 | legal rights of your application users. 181 | 182 | 6. You agree to notify NVIDIA in writing of any known or 183 | suspected distribution or use of the SDK not in compliance 184 | with the requirements of this Agreement, and to enforce 185 | the terms of your agreements with respect to distributed 186 | SDK. 187 | 188 | 189 | 1.1.3. Authorized Users 190 | 191 | You may allow employees and contractors of your entity or of 192 | your subsidiary(ies) to access and use the SDK from your 193 | secure network to perform work on your behalf. 194 | 195 | If you are an academic institution you may allow users 196 | enrolled or employed by the academic institution to access and 197 | use the SDK from your secure network. 198 | 199 | You are responsible for the compliance with the terms of this 200 | Agreement by your authorized users. If you become aware that 201 | your authorized users didn’t follow the terms of this 202 | Agreement, you agree to take reasonable steps to resolve the 203 | non-compliance and prevent new occurrences. 204 | 205 | 206 | 1.1.4. Pre-Release SDK 207 | 208 | The SDK versions identified as alpha, beta, preview or 209 | otherwise as pre-release, may not be fully functional, may 210 | contain errors or design flaws, and may have reduced or 211 | different security, privacy, accessibility, availability, and 212 | reliability standards relative to commercial versions of 213 | NVIDIA software and materials. Use of a pre-release SDK may 214 | result in unexpected results, loss of data, project delays or 215 | other unpredictable damage or loss. 216 | 217 | You may use a pre-release SDK at your own risk, understanding 218 | that pre-release SDKs are not intended for use in production 219 | or business-critical systems. 220 | 221 | NVIDIA may choose not to make available a commercial version 222 | of any pre-release SDK. NVIDIA may also choose to abandon 223 | development and terminate the availability of a pre-release 224 | SDK at any time without liability. 225 | 226 | 227 | 1.1.5. Updates 228 | 229 | NVIDIA may, at its option, make available patches, workarounds 230 | or other updates to this SDK. Unless the updates are provided 231 | with their separate governing terms, they are deemed part of 232 | the SDK licensed to you as provided in this Agreement. You 233 | agree that the form and content of the SDK that NVIDIA 234 | provides may change without prior notice to you. While NVIDIA 235 | generally maintains compatibility between versions, NVIDIA may 236 | in some cases make changes that introduce incompatibilities in 237 | future versions of the SDK. 238 | 239 | 240 | 1.1.6. Components Under Other Licenses 241 | 242 | The SDK may come bundled with, or otherwise include or be 243 | distributed with, NVIDIA or third-party components with 244 | separate legal notices or terms as may be described in 245 | proprietary notices accompanying the SDK. If and to the extent 246 | there is a conflict between the terms in this Agreement and 247 | the license terms associated with the component, the license 248 | terms associated with the components control only to the 249 | extent necessary to resolve the conflict. 250 | 251 | Subject to the other terms of this Agreement, you may use the 252 | SDK to develop and test applications released under Open 253 | Source Initiative (OSI) approved open source software 254 | licenses. 255 | 256 | 257 | 1.1.7. Reservation of Rights 258 | 259 | NVIDIA reserves all rights, title, and interest in and to the 260 | SDK, not expressly granted to you under this Agreement. 261 | 262 | 263 | 1.2. Limitations 264 | 265 | The following license limitations apply to your use of the 266 | SDK: 267 | 268 | 1. You may not reverse engineer, decompile or disassemble, 269 | or remove copyright or other proprietary notices from any 270 | portion of the SDK or copies of the SDK. 271 | 272 | 2. Except as expressly provided in this Agreement, you may 273 | not copy, sell, rent, sublicense, transfer, distribute, 274 | modify, or create derivative works of any portion of the 275 | SDK. For clarity, you may not distribute or sublicense the 276 | SDK as a stand-alone product. 277 | 278 | 3. Unless you have an agreement with NVIDIA for this 279 | purpose, you may not indicate that an application created 280 | with the SDK is sponsored or endorsed by NVIDIA. 281 | 282 | 4. You may not bypass, disable, or circumvent any 283 | encryption, security, digital rights management or 284 | authentication mechanism in the SDK. 285 | 286 | 5. You may not use the SDK in any manner that would cause it 287 | to become subject to an open source software license. As 288 | examples, licenses that require as a condition of use, 289 | modification, and/or distribution that the SDK be: 290 | 291 | a. Disclosed or distributed in source code form; 292 | 293 | b. Licensed for the purpose of making derivative works; 294 | or 295 | 296 | c. Redistributable at no charge. 297 | 298 | 6. You acknowledge that the SDK as delivered is not tested 299 | or certified by NVIDIA for use in connection with the 300 | design, construction, maintenance, and/or operation of any 301 | system where the use or failure of such system could 302 | result in a situation that threatens the safety of human 303 | life or results in catastrophic damages (each, a "Critical 304 | Application"). Examples of Critical Applications include 305 | use in avionics, navigation, autonomous vehicle 306 | applications, ai solutions for automotive products, 307 | military, medical, life support or other life critical 308 | applications. NVIDIA shall not be liable to you or any 309 | third party, in whole or in part, for any claims or 310 | damages arising from such uses. You are solely responsible 311 | for ensuring that any product or service developed with 312 | the SDK as a whole includes sufficient features to comply 313 | with all applicable legal and regulatory standards and 314 | requirements. 315 | 316 | 7. You agree to defend, indemnify and hold harmless NVIDIA 317 | and its affiliates, and their respective employees, 318 | contractors, agents, officers and directors, from and 319 | against any and all claims, damages, obligations, losses, 320 | liabilities, costs or debt, fines, restitutions and 321 | expenses (including but not limited to attorney’s fees 322 | and costs incident to establishing the right of 323 | indemnification) arising out of or related to products or 324 | services that use the SDK in or for Critical Applications, 325 | and for use of the SDK outside of the scope of this 326 | Agreement or not in compliance with its terms. 327 | 328 | 8. You may not reverse engineer, decompile or disassemble 329 | any portion of the output generated using SDK elements for 330 | the purpose of translating such output artifacts to target 331 | a non-NVIDIA platform. 332 | 333 | 334 | 1.3. Ownership 335 | 336 | 1. NVIDIA or its licensors hold all rights, title and 337 | interest in and to the SDK and its modifications and 338 | derivative works, including their respective intellectual 339 | property rights, subject to your rights under Section 340 | 1.3.2. This SDK may include software and materials from 341 | NVIDIA’s licensors, and these licensors are intended 342 | third party beneficiaries that may enforce this Agreement 343 | with respect to their intellectual property rights. 344 | 345 | 2. You hold all rights, title and interest in and to your 346 | applications and your derivative works of the sample 347 | source code delivered in the SDK, including their 348 | respective intellectual property rights, subject to 349 | NVIDIA’s rights under Section 1.3.1. 350 | 351 | 3. You may, but don’t have to, provide to NVIDIA 352 | suggestions, feature requests or other feedback regarding 353 | the SDK, including possible enhancements or modifications 354 | to the SDK. For any feedback that you voluntarily provide, 355 | you hereby grant NVIDIA and its affiliates a perpetual, 356 | non-exclusive, worldwide, irrevocable license to use, 357 | reproduce, modify, license, sublicense (through multiple 358 | tiers of sublicensees), and distribute (through multiple 359 | tiers of distributors) it without the payment of any 360 | royalties or fees to you. NVIDIA will use feedback at its 361 | choice. NVIDIA is constantly looking for ways to improve 362 | its products, so you may send feedback to NVIDIA through 363 | the developer portal at https://developer.nvidia.com. 364 | 365 | 366 | 1.4. No Warranties 367 | 368 | THE SDK IS PROVIDED BY NVIDIA “AS IS” AND “WITH ALL 369 | FAULTS.” TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND 370 | ITS AFFILIATES EXPRESSLY DISCLAIM ALL WARRANTIES OF ANY KIND 371 | OR NATURE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, 372 | BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 373 | FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, OR THE 374 | ABSENCE OF ANY DEFECTS THEREIN, WHETHER LATENT OR PATENT. NO 375 | WARRANTY IS MADE ON THE BASIS OF TRADE USAGE, COURSE OF 376 | DEALING OR COURSE OF TRADE. 377 | 378 | 379 | 1.5. Limitation of Liability 380 | 381 | TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND ITS 382 | AFFILIATES SHALL NOT BE LIABLE FOR ANY SPECIAL, INCIDENTAL, 383 | PUNITIVE OR CONSEQUENTIAL DAMAGES, OR ANY LOST PROFITS, LOSS 384 | OF USE, LOSS OF DATA OR LOSS OF GOODWILL, OR THE COSTS OF 385 | PROCURING SUBSTITUTE PRODUCTS, ARISING OUT OF OR IN CONNECTION 386 | WITH THIS AGREEMENT OR THE USE OR PERFORMANCE OF THE SDK, 387 | WHETHER SUCH LIABILITY ARISES FROM ANY CLAIM BASED UPON BREACH 388 | OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), 389 | PRODUCT LIABILITY OR ANY OTHER CAUSE OF ACTION OR THEORY OF 390 | LIABILITY. IN NO EVENT WILL NVIDIA’S AND ITS AFFILIATES 391 | TOTAL CUMULATIVE LIABILITY UNDER OR ARISING OUT OF THIS 392 | AGREEMENT EXCEED US$10.00. THE NATURE OF THE LIABILITY OR THE 393 | NUMBER OF CLAIMS OR SUITS SHALL NOT ENLARGE OR EXTEND THIS 394 | LIMIT. 395 | 396 | These exclusions and limitations of liability shall apply 397 | regardless if NVIDIA or its affiliates have been advised of 398 | the possibility of such damages, and regardless of whether a 399 | remedy fails its essential purpose. These exclusions and 400 | limitations of liability form an essential basis of the 401 | bargain between the parties, and, absent any of these 402 | exclusions or limitations of liability, the provisions of this 403 | Agreement, including, without limitation, the economic terms, 404 | would be substantially different. 405 | 406 | 407 | 1.6. Termination 408 | 409 | 1. This Agreement will continue to apply until terminated by 410 | either you or NVIDIA as described below. 411 | 412 | 2. If you want to terminate this Agreement, you may do so by 413 | stopping to use the SDK. 414 | 415 | 3. NVIDIA may, at any time, terminate this Agreement if: 416 | 417 | a. (i) you fail to comply with any term of this 418 | Agreement and the non-compliance is not fixed within 419 | thirty (30) days following notice from NVIDIA (or 420 | immediately if you violate NVIDIA’s intellectual 421 | property rights); 422 | 423 | b. (ii) you commence or participate in any legal 424 | proceeding against NVIDIA with respect to the SDK; or 425 | 426 | c. (iii) NVIDIA decides to no longer provide the SDK in 427 | a country or, in NVIDIA’s sole discretion, the 428 | continued use of it is no longer commercially viable. 429 | 430 | 4. Upon any termination of this Agreement, you agree to 431 | promptly discontinue use of the SDK and destroy all copies 432 | in your possession or control. Your prior distributions in 433 | accordance with this Agreement are not affected by the 434 | termination of this Agreement. Upon written request, you 435 | will certify in writing that you have complied with your 436 | commitments under this section. Upon any termination of 437 | this Agreement all provisions survive except for the 438 | license grant provisions. 439 | 440 | 441 | 1.7. General 442 | 443 | If you wish to assign this Agreement or your rights and 444 | obligations, including by merger, consolidation, dissolution 445 | or operation of law, contact NVIDIA to ask for permission. Any 446 | attempted assignment not approved by NVIDIA in writing shall 447 | be void and of no effect. NVIDIA may assign, delegate or 448 | transfer this Agreement and its rights and obligations, and if 449 | to a non-affiliate you will be notified. 450 | 451 | You agree to cooperate with NVIDIA and provide reasonably 452 | requested information to verify your compliance with this 453 | Agreement. 454 | 455 | This Agreement will be governed in all respects by the laws of 456 | the United States and of the State of Delaware as those laws 457 | are applied to contracts entered into and performed entirely 458 | within Delaware by Delaware residents, without regard to the 459 | conflicts of laws principles. The United Nations Convention on 460 | Contracts for the International Sale of Goods is specifically 461 | disclaimed. You agree to all terms of this Agreement in the 462 | English language. 463 | 464 | The state or federal courts residing in Santa Clara County, 465 | California shall have exclusive jurisdiction over any dispute 466 | or claim arising out of this Agreement. Notwithstanding this, 467 | you agree that NVIDIA shall still be allowed to apply for 468 | injunctive remedies or an equivalent type of urgent legal 469 | relief in any jurisdiction. 470 | 471 | If any court of competent jurisdiction determines that any 472 | provision of this Agreement is illegal, invalid or 473 | unenforceable, such provision will be construed as limited to 474 | the extent necessary to be consistent with and fully 475 | enforceable under the law and the remaining provisions will 476 | remain in full force and effect. Unless otherwise specified, 477 | remedies are cumulative. 478 | 479 | Each party acknowledges and agrees that the other is an 480 | independent contractor in the performance of this Agreement. 481 | 482 | The SDK has been developed entirely at private expense and is 483 | “commercial items” consisting of “commercial computer 484 | software” and “commercial computer software 485 | documentation” provided with RESTRICTED RIGHTS. Use, 486 | duplication or disclosure by the U.S. Government or a U.S. 487 | Government subcontractor is subject to the restrictions in 488 | this Agreement pursuant to DFARS 227.7202-3(a) or as set forth 489 | in subparagraphs (c)(1) and (2) of the Commercial Computer 490 | Software - Restricted Rights clause at FAR 52.227-19, as 491 | applicable. Contractor/manufacturer is NVIDIA, 2788 San Tomas 492 | Expressway, Santa Clara, CA 95051. 493 | 494 | The SDK is subject to United States export laws and 495 | regulations. You agree that you will not ship, transfer or 496 | export the SDK into any country, or use the SDK in any manner, 497 | prohibited by the United States Bureau of Industry and 498 | Security or economic sanctions regulations administered by the 499 | U.S. Department of Treasury’s Office of Foreign Assets 500 | Control (OFAC), or any applicable export laws, restrictions or 501 | regulations. These laws include restrictions on destinations, 502 | end users and end use. By accepting this Agreement, you 503 | confirm that you are not a resident or citizen of any country 504 | currently embargoed by the U.S. and that you are not otherwise 505 | prohibited from receiving the SDK. 506 | 507 | Any notice delivered by NVIDIA to you under this Agreement 508 | will be delivered via mail, email or fax. You agree that any 509 | notices that NVIDIA sends you electronically will satisfy any 510 | legal communication requirements. Please direct your legal 511 | notices or other correspondence to NVIDIA Corporation, 2788 512 | San Tomas Expressway, Santa Clara, California 95051, United 513 | States of America, Attention: Legal Department. 514 | 515 | This Agreement and any exhibits incorporated into this 516 | Agreement constitute the entire agreement of the parties with 517 | respect to the subject matter of this Agreement and supersede 518 | all prior negotiations or documentation exchanged between the 519 | parties relating to this SDK license. Any additional and/or 520 | conflicting terms on documents issued by you are null, void, 521 | and invalid. Any amendment or waiver under this Agreement 522 | shall be in writing and signed by representatives of both 523 | parties. 524 | 525 | 526 | 2. CUDA Toolkit Supplement to Software License Agreement for 527 | NVIDIA Software Development Kits 528 | ------------------------------------------------------------ 529 | 530 | The terms in this supplement govern your use of the NVIDIA 531 | CUDA Toolkit SDK under the terms of your license agreement 532 | (“Agreement”) as modified by this supplement. Capitalized 533 | terms used but not defined below have the meaning assigned to 534 | them in the Agreement. 535 | 536 | This supplement is an exhibit to the Agreement and is 537 | incorporated as an integral part of the Agreement. In the 538 | event of conflict between the terms in this supplement and the 539 | terms in the Agreement, the terms in this supplement govern. 540 | 541 | 542 | 2.1. License Scope 543 | 544 | The SDK is licensed for you to develop applications only for 545 | use in systems with NVIDIA GPUs. 546 | 547 | 548 | 2.2. Distribution 549 | 550 | The portions of the SDK that are distributable under the 551 | Agreement are listed in Attachment A. 552 | 553 | 554 | 2.3. Operating Systems 555 | 556 | Those portions of the SDK designed exclusively for use on the 557 | Linux or FreeBSD operating systems, or other operating systems 558 | derived from the source code to these operating systems, may 559 | be copied and redistributed for use in accordance with this 560 | Agreement, provided that the object code files are not 561 | modified in any way (except for unzipping of compressed 562 | files). 563 | 564 | 565 | 2.4. Audio and Video Encoders and Decoders 566 | 567 | You acknowledge and agree that it is your sole responsibility 568 | to obtain any additional third-party licenses required to 569 | make, have made, use, have used, sell, import, and offer for 570 | sale your products or services that include or incorporate any 571 | third-party software and content relating to audio and/or 572 | video encoders and decoders from, including but not limited 573 | to, Microsoft, Thomson, Fraunhofer IIS, Sisvel S.p.A., 574 | MPEG-LA, and Coding Technologies. NVIDIA does not grant to you 575 | under this Agreement any necessary patent or other rights with 576 | respect to any audio and/or video encoders and decoders. 577 | 578 | 579 | 2.5. Licensing 580 | 581 | If the distribution terms in this Agreement are not suitable 582 | for your organization, or for any questions regarding this 583 | Agreement, please contact NVIDIA at 584 | nvidia-compute-license-questions@nvidia.com. 585 | 586 | 587 | 2.6. Attachment A 588 | 589 | The following CUDA Toolkit files may be distributed with 590 | Licensee Applications developed by you, including certain 591 | variations of these files that have version number or 592 | architecture specific information embedded in the file name - 593 | as an example only, for release version 9.0 of the 64-bit 594 | Windows software, the file cudart64_90.dll is redistributable. 595 | 596 | Component 597 | 598 | CUDA Runtime 599 | 600 | Windows 601 | 602 | cudart.dll, cudart_static.lib, cudadevrt.lib 603 | 604 | Mac OSX 605 | 606 | libcudart.dylib, libcudart_static.a, libcudadevrt.a 607 | 608 | Linux 609 | 610 | libcudart.so, libcudart_static.a, libcudadevrt.a 611 | 612 | Android 613 | 614 | libcudart.so, libcudart_static.a, libcudadevrt.a 615 | 616 | Component 617 | 618 | CUDA FFT Library 619 | 620 | Windows 621 | 622 | cufft.dll, cufftw.dll, cufft.lib, cufftw.lib 623 | 624 | Mac OSX 625 | 626 | libcufft.dylib, libcufft_static.a, libcufftw.dylib, 627 | libcufftw_static.a 628 | 629 | Linux 630 | 631 | libcufft.so, libcufft_static.a, libcufftw.so, 632 | libcufftw_static.a 633 | 634 | Android 635 | 636 | libcufft.so, libcufft_static.a, libcufftw.so, 637 | libcufftw_static.a 638 | 639 | Component 640 | 641 | CUDA BLAS Library 642 | 643 | Windows 644 | 645 | cublas.dll, cublasLt.dll 646 | 647 | Mac OSX 648 | 649 | libcublas.dylib, libcublasLt.dylib, libcublas_static.a, 650 | libcublasLt_static.a 651 | 652 | Linux 653 | 654 | libcublas.so, libcublasLt.so, libcublas_static.a, 655 | libcublasLt_static.a 656 | 657 | Android 658 | 659 | libcublas.so, libcublasLt.so, libcublas_static.a, 660 | libcublasLt_static.a 661 | 662 | Component 663 | 664 | NVIDIA "Drop-in" BLAS Library 665 | 666 | Windows 667 | 668 | nvblas.dll 669 | 670 | Mac OSX 671 | 672 | libnvblas.dylib 673 | 674 | Linux 675 | 676 | libnvblas.so 677 | 678 | Component 679 | 680 | CUDA Sparse Matrix Library 681 | 682 | Windows 683 | 684 | cusparse.dll, cusparse.lib 685 | 686 | Mac OSX 687 | 688 | libcusparse.dylib, libcusparse_static.a 689 | 690 | Linux 691 | 692 | libcusparse.so, libcusparse_static.a 693 | 694 | Android 695 | 696 | libcusparse.so, libcusparse_static.a 697 | 698 | Component 699 | 700 | CUDA Linear Solver Library 701 | 702 | Windows 703 | 704 | cusolver.dll, cusolver.lib 705 | 706 | Mac OSX 707 | 708 | libcusolver.dylib, libcusolver_static.a 709 | 710 | Linux 711 | 712 | libcusolver.so, libcusolver_static.a 713 | 714 | Android 715 | 716 | libcusolver.so, libcusolver_static.a 717 | 718 | Component 719 | 720 | CUDA Random Number Generation Library 721 | 722 | Windows 723 | 724 | curand.dll, curand.lib 725 | 726 | Mac OSX 727 | 728 | libcurand.dylib, libcurand_static.a 729 | 730 | Linux 731 | 732 | libcurand.so, libcurand_static.a 733 | 734 | Android 735 | 736 | libcurand.so, libcurand_static.a 737 | 738 | Component 739 | 740 | NVIDIA Performance Primitives Library 741 | 742 | Windows 743 | 744 | nppc.dll, nppc.lib, nppial.dll, nppial.lib, nppicc.dll, 745 | nppicc.lib, nppicom.dll, nppicom.lib, nppidei.dll, 746 | nppidei.lib, nppif.dll, nppif.lib, nppig.dll, nppig.lib, 747 | nppim.dll, nppim.lib, nppist.dll, nppist.lib, nppisu.dll, 748 | nppisu.lib, nppitc.dll, nppitc.lib, npps.dll, npps.lib 749 | 750 | Mac OSX 751 | 752 | libnppc.dylib, libnppc_static.a, libnppial.dylib, 753 | libnppial_static.a, libnppicc.dylib, libnppicc_static.a, 754 | libnppicom.dylib, libnppicom_static.a, libnppidei.dylib, 755 | libnppidei_static.a, libnppif.dylib, libnppif_static.a, 756 | libnppig.dylib, libnppig_static.a, libnppim.dylib, 757 | libnppisu_static.a, libnppitc.dylib, libnppitc_static.a, 758 | libnpps.dylib, libnpps_static.a 759 | 760 | Linux 761 | 762 | libnppc.so, libnppc_static.a, libnppial.so, 763 | libnppial_static.a, libnppicc.so, libnppicc_static.a, 764 | libnppicom.so, libnppicom_static.a, libnppidei.so, 765 | libnppidei_static.a, libnppif.so, libnppif_static.a 766 | libnppig.so, libnppig_static.a, libnppim.so, 767 | libnppim_static.a, libnppist.so, libnppist_static.a, 768 | libnppisu.so, libnppisu_static.a, libnppitc.so 769 | libnppitc_static.a, libnpps.so, libnpps_static.a 770 | 771 | Android 772 | 773 | libnppc.so, libnppc_static.a, libnppial.so, 774 | libnppial_static.a, libnppicc.so, libnppicc_static.a, 775 | libnppicom.so, libnppicom_static.a, libnppidei.so, 776 | libnppidei_static.a, libnppif.so, libnppif_static.a 777 | libnppig.so, libnppig_static.a, libnppim.so, 778 | libnppim_static.a, libnppist.so, libnppist_static.a, 779 | libnppisu.so, libnppisu_static.a, libnppitc.so 780 | libnppitc_static.a, libnpps.so, libnpps_static.a 781 | 782 | Component 783 | 784 | NVIDIA JPEG Library 785 | 786 | Windows 787 | 788 | nvjpeg.lib, nvjpeg.dll 789 | 790 | Linux 791 | 792 | libnvjpeg.so, libnvjpeg_static.a 793 | 794 | Component 795 | 796 | Internal common library required for statically linking to 797 | cuBLAS, cuSPARSE, cuFFT, cuRAND, nvJPEG and NPP 798 | 799 | Mac OSX 800 | 801 | libculibos.a 802 | 803 | Linux 804 | 805 | libculibos.a 806 | 807 | Component 808 | 809 | NVIDIA Runtime Compilation Library and Header 810 | 811 | All 812 | 813 | nvrtc.h 814 | 815 | Windows 816 | 817 | nvrtc.dll, nvrtc-builtins.dll 818 | 819 | Mac OSX 820 | 821 | libnvrtc.dylib, libnvrtc-builtins.dylib 822 | 823 | Linux 824 | 825 | libnvrtc.so, libnvrtc-builtins.so 826 | 827 | Component 828 | 829 | NVIDIA Optimizing Compiler Library 830 | 831 | Windows 832 | 833 | nvvm.dll 834 | 835 | Mac OSX 836 | 837 | libnvvm.dylib 838 | 839 | Linux 840 | 841 | libnvvm.so 842 | 843 | Component 844 | 845 | NVIDIA Common Device Math Functions Library 846 | 847 | Windows 848 | 849 | libdevice.10.bc 850 | 851 | Mac OSX 852 | 853 | libdevice.10.bc 854 | 855 | Linux 856 | 857 | libdevice.10.bc 858 | 859 | Component 860 | 861 | CUDA Occupancy Calculation Header Library 862 | 863 | All 864 | 865 | cuda_occupancy.h 866 | 867 | Component 868 | 869 | CUDA Half Precision Headers 870 | 871 | All 872 | 873 | cuda_fp16.h, cuda_fp16.hpp 874 | 875 | Component 876 | 877 | CUDA Profiling Tools Interface (CUPTI) Library 878 | 879 | Windows 880 | 881 | cupti.dll 882 | 883 | Mac OSX 884 | 885 | libcupti.dylib 886 | 887 | Linux 888 | 889 | libcupti.so 890 | 891 | Component 892 | 893 | NVIDIA Tools Extension Library 894 | 895 | Windows 896 | 897 | nvToolsExt.dll, nvToolsExt.lib 898 | 899 | Mac OSX 900 | 901 | libnvToolsExt.dylib 902 | 903 | Linux 904 | 905 | libnvToolsExt.so 906 | 907 | Component 908 | 909 | NVIDIA CUDA Driver Libraries 910 | 911 | Linux 912 | 913 | libcuda.so, libnvidia-ptxjitcompiler.so 914 | 915 | Component 916 | 917 | NVIDIA CUDA File IO Libraries and Header 918 | 919 | All 920 | 921 | cufile.h 922 | 923 | Linux 924 | 925 | libcufile.so, libcufile_rdma.so, libcufile_static.a, 926 | libcufile_rdma_static.a 927 | 928 | The NVIDIA CUDA Driver Libraries are only distributable in 929 | applications that meet this criteria: 930 | 931 | 1. The application was developed starting from a NVIDIA CUDA 932 | container obtained from Docker Hub or the NVIDIA GPU 933 | Cloud, and 934 | 935 | 2. The resulting application is packaged as a Docker 936 | container and distributed to users on Docker Hub or the 937 | NVIDIA GPU Cloud only. 938 | 939 | In addition to the rights above, for parties that are 940 | developing software intended solely for use on Jetson 941 | development kits or Jetson modules, and running Linux for 942 | Tegra software, the following shall apply: 943 | 944 | * The SDK may be distributed in its entirety, as provided by 945 | NVIDIA, and without separation of its components, for you 946 | and/or your licensees to create software development kits 947 | for use only on the Jetson platform and running Linux for 948 | Tegra software. 949 | 950 | 951 | 2.7. Attachment B 952 | 953 | 954 | Additional Licensing Obligations 955 | 956 | The following third party components included in the SOFTWARE 957 | are licensed to Licensee pursuant to the following terms and 958 | conditions: 959 | 960 | 1. Licensee's use of the GDB third party component is 961 | subject to the terms and conditions of GNU GPL v3: 962 | 963 | This product includes copyrighted third-party software licensed 964 | under the terms of the GNU General Public License v3 ("GPL v3"). 965 | All third-party software packages are copyright by their respective 966 | authors. GPL v3 terms and conditions are hereby incorporated into 967 | the Agreement by this reference: http://www.gnu.org/licenses/gpl.txt 968 | 969 | Consistent with these licensing requirements, the software 970 | listed below is provided under the terms of the specified 971 | open source software licenses. To obtain source code for 972 | software provided under licenses that require 973 | redistribution of source code, including the GNU General 974 | Public License (GPL) and GNU Lesser General Public License 975 | (LGPL), contact oss-requests@nvidia.com. This offer is 976 | valid for a period of three (3) years from the date of the 977 | distribution of this product by NVIDIA CORPORATION. 978 | 979 | Component License 980 | CUDA-GDB GPL v3 981 | 982 | 2. Licensee represents and warrants that any and all third 983 | party licensing and/or royalty payment obligations in 984 | connection with Licensee's use of the H.264 video codecs 985 | are solely the responsibility of Licensee. 986 | 987 | 3. Licensee's use of the Thrust library is subject to the 988 | terms and conditions of the Apache License Version 2.0. 989 | All third-party software packages are copyright by their 990 | respective authors. Apache License Version 2.0 terms and 991 | conditions are hereby incorporated into the Agreement by 992 | this reference. 993 | http://www.apache.org/licenses/LICENSE-2.0.html 994 | 995 | In addition, Licensee acknowledges the following notice: 996 | Thrust includes source code from the Boost Iterator, 997 | Tuple, System, and Random Number libraries. 998 | 999 | Boost Software License - Version 1.0 - August 17th, 2003 1000 | . . . . 1001 | 1002 | Permission is hereby granted, free of charge, to any person or 1003 | organization obtaining a copy of the software and accompanying 1004 | documentation covered by this license (the "Software") to use, 1005 | reproduce, display, distribute, execute, and transmit the Software, 1006 | and to prepare derivative works of the Software, and to permit 1007 | third-parties to whom the Software is furnished to do so, all 1008 | subject to the following: 1009 | 1010 | The copyright notices in the Software and this entire statement, 1011 | including the above license grant, this restriction and the following 1012 | disclaimer, must be included in all copies of the Software, in whole 1013 | or in part, and all derivative works of the Software, unless such 1014 | copies or derivative works are solely in the form of machine-executable 1015 | object code generated by a source language processor. 1016 | 1017 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1018 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1019 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND 1020 | NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR 1021 | ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR 1022 | OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING 1023 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 1024 | OTHER DEALINGS IN THE SOFTWARE. 1025 | 1026 | 4. Licensee's use of the LLVM third party component is 1027 | subject to the following terms and conditions: 1028 | 1029 | ====================================================== 1030 | LLVM Release License 1031 | ====================================================== 1032 | University of Illinois/NCSA 1033 | Open Source License 1034 | 1035 | Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign. 1036 | All rights reserved. 1037 | 1038 | Developed by: 1039 | 1040 | LLVM Team 1041 | 1042 | University of Illinois at Urbana-Champaign 1043 | 1044 | http://llvm.org 1045 | 1046 | Permission is hereby granted, free of charge, to any person obtaining a copy 1047 | of this software and associated documentation files (the "Software"), to 1048 | deal with the Software without restriction, including without limitation the 1049 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 1050 | sell copies of the Software, and to permit persons to whom the Software is 1051 | furnished to do so, subject to the following conditions: 1052 | 1053 | * Redistributions of source code must retain the above copyright notice, 1054 | this list of conditions and the following disclaimers. 1055 | 1056 | * Redistributions in binary form must reproduce the above copyright 1057 | notice, this list of conditions and the following disclaimers in the 1058 | documentation and/or other materials provided with the distribution. 1059 | 1060 | * Neither the names of the LLVM Team, University of Illinois at Urbana- 1061 | Champaign, nor the names of its contributors may be used to endorse or 1062 | promote products derived from this Software without specific prior 1063 | written permission. 1064 | 1065 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1066 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1067 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1068 | THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 1069 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 1070 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 1071 | DEALINGS WITH THE SOFTWARE. 1072 | 1073 | 5. Licensee's use of the PCRE third party component is 1074 | subject to the following terms and conditions: 1075 | 1076 | ------------ 1077 | PCRE LICENCE 1078 | ------------ 1079 | PCRE is a library of functions to support regular expressions whose syntax 1080 | and semantics are as close as possible to those of the Perl 5 language. 1081 | Release 8 of PCRE is distributed under the terms of the "BSD" licence, as 1082 | specified below. The documentation for PCRE, supplied in the "doc" 1083 | directory, is distributed under the same terms as the software itself. The 1084 | basic library functions are written in C and are freestanding. Also 1085 | included in the distribution is a set of C++ wrapper functions, and a just- 1086 | in-time compiler that can be used to optimize pattern matching. These are 1087 | both optional features that can be omitted when the library is built. 1088 | 1089 | THE BASIC LIBRARY FUNCTIONS 1090 | --------------------------- 1091 | Written by: Philip Hazel 1092 | Email local part: ph10 1093 | Email domain: cam.ac.uk 1094 | University of Cambridge Computing Service, 1095 | Cambridge, England. 1096 | Copyright (c) 1997-2012 University of Cambridge 1097 | All rights reserved. 1098 | 1099 | PCRE JUST-IN-TIME COMPILATION SUPPORT 1100 | ------------------------------------- 1101 | Written by: Zoltan Herczeg 1102 | Email local part: hzmester 1103 | Emain domain: freemail.hu 1104 | Copyright(c) 2010-2012 Zoltan Herczeg 1105 | All rights reserved. 1106 | 1107 | STACK-LESS JUST-IN-TIME COMPILER 1108 | -------------------------------- 1109 | Written by: Zoltan Herczeg 1110 | Email local part: hzmester 1111 | Emain domain: freemail.hu 1112 | Copyright(c) 2009-2012 Zoltan Herczeg 1113 | All rights reserved. 1114 | 1115 | THE C++ WRAPPER FUNCTIONS 1116 | ------------------------- 1117 | Contributed by: Google Inc. 1118 | Copyright (c) 2007-2012, Google Inc. 1119 | All rights reserved. 1120 | 1121 | THE "BSD" LICENCE 1122 | ----------------- 1123 | Redistribution and use in source and binary forms, with or without 1124 | modification, are permitted provided that the following conditions are met: 1125 | 1126 | * Redistributions of source code must retain the above copyright notice, 1127 | this list of conditions and the following disclaimer. 1128 | 1129 | * Redistributions in binary form must reproduce the above copyright 1130 | notice, this list of conditions and the following disclaimer in the 1131 | documentation and/or other materials provided with the distribution. 1132 | 1133 | * Neither the name of the University of Cambridge nor the name of Google 1134 | Inc. nor the names of their contributors may be used to endorse or 1135 | promote products derived from this software without specific prior 1136 | written permission. 1137 | 1138 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 1139 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1140 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1141 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 1142 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1143 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1144 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 1145 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 1146 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 1147 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1148 | POSSIBILITY OF SUCH DAMAGE. 1149 | 1150 | 6. Some of the cuBLAS library routines were written by or 1151 | derived from code written by Vasily Volkov and are subject 1152 | to the Modified Berkeley Software Distribution License as 1153 | follows: 1154 | 1155 | Copyright (c) 2007-2009, Regents of the University of California 1156 | 1157 | All rights reserved. 1158 | 1159 | Redistribution and use in source and binary forms, with or without 1160 | modification, are permitted provided that the following conditions are 1161 | met: 1162 | * Redistributions of source code must retain the above copyright 1163 | notice, this list of conditions and the following disclaimer. 1164 | * Redistributions in binary form must reproduce the above 1165 | copyright notice, this list of conditions and the following 1166 | disclaimer in the documentation and/or other materials provided 1167 | with the distribution. 1168 | * Neither the name of the University of California, Berkeley nor 1169 | the names of its contributors may be used to endorse or promote 1170 | products derived from this software without specific prior 1171 | written permission. 1172 | 1173 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR 1174 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1175 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1176 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 1177 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1178 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1179 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1180 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1181 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1182 | IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1183 | POSSIBILITY OF SUCH DAMAGE. 1184 | 1185 | 7. Some of the cuBLAS library routines were written by or 1186 | derived from code written by Davide Barbieri and are 1187 | subject to the Modified Berkeley Software Distribution 1188 | License as follows: 1189 | 1190 | Copyright (c) 2008-2009 Davide Barbieri @ University of Rome Tor Vergata. 1191 | 1192 | All rights reserved. 1193 | 1194 | Redistribution and use in source and binary forms, with or without 1195 | modification, are permitted provided that the following conditions are 1196 | met: 1197 | * Redistributions of source code must retain the above copyright 1198 | notice, this list of conditions and the following disclaimer. 1199 | * Redistributions in binary form must reproduce the above 1200 | copyright notice, this list of conditions and the following 1201 | disclaimer in the documentation and/or other materials provided 1202 | with the distribution. 1203 | * The name of the author may not be used to endorse or promote 1204 | products derived from this software without specific prior 1205 | written permission. 1206 | 1207 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR 1208 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1209 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1210 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 1211 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1212 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1213 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1214 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1215 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1216 | IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1217 | POSSIBILITY OF SUCH DAMAGE. 1218 | 1219 | 8. Some of the cuBLAS library routines were derived from 1220 | code developed by the University of Tennessee and are 1221 | subject to the Modified Berkeley Software Distribution 1222 | License as follows: 1223 | 1224 | Copyright (c) 2010 The University of Tennessee. 1225 | 1226 | All rights reserved. 1227 | 1228 | Redistribution and use in source and binary forms, with or without 1229 | modification, are permitted provided that the following conditions are 1230 | met: 1231 | * Redistributions of source code must retain the above copyright 1232 | notice, this list of conditions and the following disclaimer. 1233 | * Redistributions in binary form must reproduce the above 1234 | copyright notice, this list of conditions and the following 1235 | disclaimer listed in this license in the documentation and/or 1236 | other materials provided with the distribution. 1237 | * Neither the name of the copyright holders nor the names of its 1238 | contributors may be used to endorse or promote products derived 1239 | from this software without specific prior written permission. 1240 | 1241 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1242 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1243 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1244 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1245 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1246 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1247 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1248 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1249 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1250 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1251 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1252 | 1253 | 9. Some of the cuBLAS library routines were written by or 1254 | derived from code written by Jonathan Hogg and are subject 1255 | to the Modified Berkeley Software Distribution License as 1256 | follows: 1257 | 1258 | Copyright (c) 2012, The Science and Technology Facilities Council (STFC). 1259 | 1260 | All rights reserved. 1261 | 1262 | Redistribution and use in source and binary forms, with or without 1263 | modification, are permitted provided that the following conditions are 1264 | met: 1265 | * Redistributions of source code must retain the above copyright 1266 | notice, this list of conditions and the following disclaimer. 1267 | * Redistributions in binary form must reproduce the above 1268 | copyright notice, this list of conditions and the following 1269 | disclaimer in the documentation and/or other materials provided 1270 | with the distribution. 1271 | * Neither the name of the STFC nor the names of its contributors 1272 | may be used to endorse or promote products derived from this 1273 | software without specific prior written permission. 1274 | 1275 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1276 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1277 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1278 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE STFC BE 1279 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1280 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1281 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 1282 | BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 1283 | WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 1284 | OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 1285 | IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1286 | 1287 | 10. Some of the cuBLAS library routines were written by or 1288 | derived from code written by Ahmad M. Abdelfattah, David 1289 | Keyes, and Hatem Ltaief, and are subject to the Apache 1290 | License, Version 2.0, as follows: 1291 | 1292 | -- (C) Copyright 2013 King Abdullah University of Science and Technology 1293 | Authors: 1294 | Ahmad Abdelfattah (ahmad.ahmad@kaust.edu.sa) 1295 | David Keyes (david.keyes@kaust.edu.sa) 1296 | Hatem Ltaief (hatem.ltaief@kaust.edu.sa) 1297 | 1298 | Redistribution and use in source and binary forms, with or without 1299 | modification, are permitted provided that the following conditions 1300 | are met: 1301 | 1302 | * Redistributions of source code must retain the above copyright 1303 | notice, this list of conditions and the following disclaimer. 1304 | * Redistributions in binary form must reproduce the above copyright 1305 | notice, this list of conditions and the following disclaimer in the 1306 | documentation and/or other materials provided with the distribution. 1307 | * Neither the name of the King Abdullah University of Science and 1308 | Technology nor the names of its contributors may be used to endorse 1309 | or promote products derived from this software without specific prior 1310 | written permission. 1311 | 1312 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1313 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1314 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1315 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1316 | HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1317 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1318 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1319 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1320 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1321 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1322 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 1323 | 1324 | 11. Some of the cuSPARSE library routines were written by or 1325 | derived from code written by Li-Wen Chang and are subject 1326 | to the NCSA Open Source License as follows: 1327 | 1328 | Copyright (c) 2012, University of Illinois. 1329 | 1330 | All rights reserved. 1331 | 1332 | Developed by: IMPACT Group, University of Illinois, http://impact.crhc.illinois.edu 1333 | 1334 | Permission is hereby granted, free of charge, to any person obtaining 1335 | a copy of this software and associated documentation files (the 1336 | "Software"), to deal with the Software without restriction, including 1337 | without limitation the rights to use, copy, modify, merge, publish, 1338 | distribute, sublicense, and/or sell copies of the Software, and to 1339 | permit persons to whom the Software is furnished to do so, subject to 1340 | the following conditions: 1341 | * Redistributions of source code must retain the above copyright 1342 | notice, this list of conditions and the following disclaimer. 1343 | * Redistributions in binary form must reproduce the above 1344 | copyright notice, this list of conditions and the following 1345 | disclaimers in the documentation and/or other materials provided 1346 | with the distribution. 1347 | * Neither the names of IMPACT Group, University of Illinois, nor 1348 | the names of its contributors may be used to endorse or promote 1349 | products derived from this Software without specific prior 1350 | written permission. 1351 | 1352 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1353 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1354 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 1355 | NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT 1356 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 1357 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 1358 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE 1359 | SOFTWARE. 1360 | 1361 | 12. Some of the cuRAND library routines were written by or 1362 | derived from code written by Mutsuo Saito and Makoto 1363 | Matsumoto and are subject to the following license: 1364 | 1365 | Copyright (c) 2009, 2010 Mutsuo Saito, Makoto Matsumoto and Hiroshima 1366 | University. All rights reserved. 1367 | 1368 | Copyright (c) 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima 1369 | University and University of Tokyo. All rights reserved. 1370 | 1371 | Redistribution and use in source and binary forms, with or without 1372 | modification, are permitted provided that the following conditions are 1373 | met: 1374 | * Redistributions of source code must retain the above copyright 1375 | notice, this list of conditions and the following disclaimer. 1376 | * Redistributions in binary form must reproduce the above 1377 | copyright notice, this list of conditions and the following 1378 | disclaimer in the documentation and/or other materials provided 1379 | with the distribution. 1380 | * Neither the name of the Hiroshima University nor the names of 1381 | its contributors may be used to endorse or promote products 1382 | derived from this software without specific prior written 1383 | permission. 1384 | 1385 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1386 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1387 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1388 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1389 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1390 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1391 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1392 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1393 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1394 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1395 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1396 | 1397 | 13. Some of the cuRAND library routines were derived from 1398 | code developed by D. E. Shaw Research and are subject to 1399 | the following license: 1400 | 1401 | Copyright 2010-2011, D. E. Shaw Research. 1402 | 1403 | All rights reserved. 1404 | 1405 | Redistribution and use in source and binary forms, with or without 1406 | modification, are permitted provided that the following conditions are 1407 | met: 1408 | * Redistributions of source code must retain the above copyright 1409 | notice, this list of conditions, and the following disclaimer. 1410 | * Redistributions in binary form must reproduce the above 1411 | copyright notice, this list of conditions, and the following 1412 | disclaimer in the documentation and/or other materials provided 1413 | with the distribution. 1414 | * Neither the name of D. E. Shaw Research nor the names of its 1415 | contributors may be used to endorse or promote products derived 1416 | from this software without specific prior written permission. 1417 | 1418 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1419 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1420 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1421 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1422 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1423 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1424 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1425 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1426 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1427 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1428 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1429 | 1430 | 14. Some of the Math library routines were written by or 1431 | derived from code developed by Norbert Juffa and are 1432 | subject to the following license: 1433 | 1434 | Copyright (c) 2015-2017, Norbert Juffa 1435 | All rights reserved. 1436 | 1437 | Redistribution and use in source and binary forms, with or without 1438 | modification, are permitted provided that the following conditions 1439 | are met: 1440 | 1441 | 1. Redistributions of source code must retain the above copyright 1442 | notice, this list of conditions and the following disclaimer. 1443 | 1444 | 2. Redistributions in binary form must reproduce the above copyright 1445 | notice, this list of conditions and the following disclaimer in the 1446 | documentation and/or other materials provided with the distribution. 1447 | 1448 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1449 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1450 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1451 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1452 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1453 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1454 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1455 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1456 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1457 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1458 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1459 | 1460 | 15. Licensee's use of the lz4 third party component is 1461 | subject to the following terms and conditions: 1462 | 1463 | Copyright (C) 2011-2013, Yann Collet. 1464 | BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) 1465 | 1466 | Redistribution and use in source and binary forms, with or without 1467 | modification, are permitted provided that the following conditions are 1468 | met: 1469 | 1470 | * Redistributions of source code must retain the above copyright 1471 | notice, this list of conditions and the following disclaimer. 1472 | * Redistributions in binary form must reproduce the above 1473 | copyright notice, this list of conditions and the following disclaimer 1474 | in the documentation and/or other materials provided with the 1475 | distribution. 1476 | 1477 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1478 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1479 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1480 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1481 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1482 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1483 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1484 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1485 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1486 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1487 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1488 | 1489 | 16. The NPP library uses code from the Boost Math Toolkit, 1490 | and is subject to the following license: 1491 | 1492 | Boost Software License - Version 1.0 - August 17th, 2003 1493 | . . . . 1494 | 1495 | Permission is hereby granted, free of charge, to any person or 1496 | organization obtaining a copy of the software and accompanying 1497 | documentation covered by this license (the "Software") to use, 1498 | reproduce, display, distribute, execute, and transmit the Software, 1499 | and to prepare derivative works of the Software, and to permit 1500 | third-parties to whom the Software is furnished to do so, all 1501 | subject to the following: 1502 | 1503 | The copyright notices in the Software and this entire statement, 1504 | including the above license grant, this restriction and the following 1505 | disclaimer, must be included in all copies of the Software, in whole 1506 | or in part, and all derivative works of the Software, unless such 1507 | copies or derivative works are solely in the form of machine-executable 1508 | object code generated by a source language processor. 1509 | 1510 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1511 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1512 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND 1513 | NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR 1514 | ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR 1515 | OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING 1516 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 1517 | OTHER DEALINGS IN THE SOFTWARE. 1518 | 1519 | 17. Portions of the Nsight Eclipse Edition is subject to the 1520 | following license: 1521 | 1522 | The Eclipse Foundation makes available all content in this plug-in 1523 | ("Content"). Unless otherwise indicated below, the Content is provided 1524 | to you under the terms and conditions of the Eclipse Public License 1525 | Version 1.0 ("EPL"). A copy of the EPL is available at http:// 1526 | www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" 1527 | will mean the Content. 1528 | 1529 | If you did not receive this Content directly from the Eclipse 1530 | Foundation, the Content is being redistributed by another party 1531 | ("Redistributor") and different terms and conditions may apply to your 1532 | use of any object code in the Content. Check the Redistributor's 1533 | license that was provided with the Content. If no such license exists, 1534 | contact the Redistributor. Unless otherwise indicated below, the terms 1535 | and conditions of the EPL still apply to any source code in the 1536 | Content and such source code may be obtained at http://www.eclipse.org. 1537 | 1538 | 18. Some of the cuBLAS library routines uses code from 1539 | OpenAI, which is subject to the following license: 1540 | 1541 | License URL 1542 | https://github.com/openai/openai-gemm/blob/master/LICENSE 1543 | 1544 | License Text 1545 | The MIT License 1546 | 1547 | Copyright (c) 2016 OpenAI (http://openai.com), 2016 Google Inc. 1548 | 1549 | Permission is hereby granted, free of charge, to any person obtaining a copy 1550 | of this software and associated documentation files (the "Software"), to deal 1551 | in the Software without restriction, including without limitation the rights 1552 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1553 | copies of the Software, and to permit persons to whom the Software is 1554 | furnished to do so, subject to the following conditions: 1555 | 1556 | The above copyright notice and this permission notice shall be included in 1557 | all copies or substantial portions of the Software. 1558 | 1559 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1560 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1561 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1562 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1563 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1564 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 1565 | THE SOFTWARE. 1566 | 1567 | 19. Licensee's use of the Visual Studio Setup Configuration 1568 | Samples is subject to the following license: 1569 | 1570 | The MIT License (MIT) 1571 | Copyright (C) Microsoft Corporation. All rights reserved. 1572 | 1573 | Permission is hereby granted, free of charge, to any person 1574 | obtaining a copy of this software and associated documentation 1575 | files (the "Software"), to deal in the Software without restriction, 1576 | including without limitation the rights to use, copy, modify, merge, 1577 | publish, distribute, sublicense, and/or sell copies of the Software, 1578 | and to permit persons to whom the Software is furnished to do so, 1579 | subject to the following conditions: 1580 | 1581 | The above copyright notice and this permission notice shall be included 1582 | in all copies or substantial portions of the Software. 1583 | 1584 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 1585 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1586 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1587 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1588 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1589 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1590 | 1591 | 20. Licensee's use of linmath.h header for CPU functions for 1592 | GL vector/matrix operations from lunarG is subject to the 1593 | Apache License Version 2.0. 1594 | 1595 | 21. The DX12-CUDA sample uses the d3dx12.h header, which is 1596 | subject to the MIT license . 1597 | 1598 | ----------------- 1599 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The cuda-checkpoint Utility 2 | 3 | Checkpoint and restore functionality for CUDA is exposed through a command-line utiity called `cuda-checkpoint` 4 | which is available in the [bin](bin) directory of this repo. 5 | This utility can be used to transparently checkpoint and restore CUDA state within a running Linux process, 6 | and can be combined with [CRIU](https://criu.org/Main_Page) (described below) to fully checkpoint CUDA applications. 7 | 8 | ## 570 Features 9 | Display driver version 570 includes these features not present in 550: 10 | * NVML support 11 | * integration with CRIU 4.0 or higher, providing process tree support 12 | * [CUDA Driver interfaces](https://docs.nvidia.com/cuda/cuda-driver-api/group__CUDA__CHECKPOINT.html) at feature parity with the `cuda-checkpoint` utility 13 | * a separate lock command which can take a timeout to avoid deadlocks 14 | 15 | This [demo program](src/r570-features.c) shows many of these features in action! 16 | 17 | ## Background 18 | Transparent, per-process checkpointing offers a middle ground between virtual machine checkpointing and application-driven checkpointing. 19 | Per-process checkpointing can be used in combination with containers to checkpoint the state of a complex application, 20 | facilitating uses-cases such as: 21 | 22 | * fault tolerance (with periodic checkpoints) 23 | * preemption of lower-priority work on a single node (by checkpointing the preempted task), and 24 | * cluster scheduling (with migration) 25 | 26 | Virtual Machine|Per-Process|Application Driven 27 | ---|---|--- 28 | || 29 | 30 | The most popular utility for transparent per-process checkpointing is a utility called [CRIU](https://criu.org/Main_Page). 31 | 32 | ## CRIU 33 | [CRIU](https://criu.org/Main_Page) (Checkpoint/Restore in Userspace) is an open source checkpointing utility 34 | (maintained outside of NVIDIA) for Linux which can checkpoint and restore process trees. 35 | CRIU exposes its functionality through a command line program called `criu` 36 | and operates by checkpointing and restoring every kernel mode resource associated with a process. These resources include: 37 | 38 | * anonymous memory, 39 | * threads, 40 | * regular files, 41 | * sockets, and 42 | * pipes between checkpointed processes. 43 | 44 | Since the behavior of these resources is specified by Linux, and are independent of the underlying hardware, 45 | CRIU knows how to checkpoint and restore them. 46 | In contrast, NVIDIA GPUs provide functionality beyond that of a standard Linux kernel, and thus CRIU is not able to manage them. 47 | `cuda-checkpoint` adds this capability, and can therefore be used with CRIU to checkpoint and restore a CUDA application. 48 | 49 | 50 | ## The Utility 51 | `cuda-checkpoint` checkpoints and restores the CUDA state of a single Linux process. 52 | The `cuda-checkpoint` utility supports display driver version 550 and higher and is located in the [bin](bin) directory of this repo. 53 | 54 | ```bash 55 | localhost$ cuda-checkpoint --help 56 | CUDA checkpoint and restore utility. 57 | Version 570.86.10. Copyright (C) 2025 NVIDIA Corporation. All rights reserved. 58 | 59 | Operations: 60 | --get-state --pid 61 | Prints the current checkpoint state of the process specified by 62 | 63 | --action lock | checkpoint | restore | unlock --pid [--timeout ] 64 | Performs the specified action on . 65 | For the lock action a timeout can be provided, the lock operation will wait up to milliseconds for the operation to succeed. 66 | 67 | --toggle --pid 68 | Toggles the CUDA state in the specified process between the running and checkpointed states 69 | 70 | --get-restore-tid --pid 71 | Retrieves the CUDA restore thread ID of the process specified by 72 | 73 | Options: 74 | --pid|-p 75 | The pid upon which to perform the operation 76 | 77 | --timeout|-t 78 | Optional timeout that can be specified for the lock action in milliseconds 79 | 80 | --help|-h 81 | Print this help message 82 | ``` 83 | 84 | The `cuda-checkpoint` binary can toggle the CUDA state of a process (specified by PID) between suspended and running. 85 | A running-to-suspended transition is called a suspend and the opposite transition is called a resume. 86 | 87 | A process's CUDA state is initially running. 88 | When `cuda-checkpoint` is used to suspend CUDA in a process: 89 | 90 | 1. any CUDA driver APIs which launch work, manage resources, or otherwise impact GPU state are locked; 91 | 2. already-submitted CUDA work, including stream callbacks, are completed; 92 | 3. device memory is copied to the host, into allocations managed by the CUDA driver; and 93 | 4. all of CUDA’s GPU resources are released. 94 | 95 | ``cuda-checkpoint`` does not suspend CPU threads, which may continue to safely interact with CUDA by: 96 | calling runtime or driver APIs (which may block until CUDA is resumed), and 97 | accessing host memory (allocated by cudaMallocHost and similar APIs) which remains valid. 98 | 99 | A suspended CUDA process no longer directly refers to any GPU hardware at the OS level 100 | and may therefore be checkpointed by a CPU checkpointing utility such as CRIU. 101 | 102 | When a process’s CUDA state is resumed using ``cuda-checkpoint``: 103 | 104 | 1. GPUs are re-acquired by the process; 105 | 2. device memory is copied back to the GPU, and GPU memory mappings are restored at their original addresses; 106 | 3. CUDA objects such as streams and contexts are restored; and 107 | 4. CUDA driver APIs are unlocked. 108 | 109 | At this point, CUDA calls will unblock and CUDA may begin running on the GPU again. 110 | 111 | ## Example 112 | This example will use `cuda-checkpoint` and `criu` to checkpoint a CUDA application called *counter*. 113 | Every time *counter* receives a packet, it increments GPU memory and replies with the updated value. 114 | The [source code](src/counter.cu) for *counter* is shown below. 115 | 116 | ```cuda 117 | #include 118 | #include 119 | #include 120 | #include 121 | #include 122 | 123 | #define PORT 10000 124 | 125 | __device__ int counter = 100; 126 | __global__ void increment() 127 | { 128 | counter++; 129 | } 130 | 131 | int main(void) 132 | { 133 | cudaFree(0); 134 | 135 | int sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); 136 | sockaddr_in addr = {AF_INET, htons(PORT), inet_addr("127.0.0.1")}; 137 | bind(sock, (sockaddr *)&addr, sizeof addr); 138 | 139 | while (true) { 140 | char buffer[16] = {0}; 141 | sockaddr_in peer = {0}; 142 | socklen_t inetSize = sizeof peer; 143 | int hCounter = 0; 144 | 145 | recvfrom(sock, buffer, sizeof buffer, 0, (sockaddr *)&peer, &inetSize); 146 | 147 | increment<<<1,1>>>(); 148 | cudaMemcpyFromSymbol(&hCounter, counter, sizeof counter); 149 | 150 | size_t bytes = sprintf(buffer, "%d\n", hCounter); 151 | sendto(sock, buffer, bytes, 0, (sockaddr *)&peer, inetSize); 152 | } 153 | return 0; 154 | } 155 | ``` 156 | 157 | The *counter* application can be built using `nvcc`. 158 | 159 | ```bash 160 | localhost$ nvcc counter.cu -o counter 161 | ``` 162 | 163 | Next, launch *counter* and wait to be sure that it is listening on its socket 164 | (which is important if this demo is being launched as [a single script](src/example.sh)). 165 | 166 | ```bash 167 | localhost# ./counter & 168 | [1] 298027 169 | localhost# sleep 1 170 | ``` 171 | 172 | Save *counter*’s PID for reference in subsequent commands. 173 | 174 | ```bash 175 | localhost# PID=$! 176 | ``` 177 | 178 | Send *counter* a packet and observe the returned value. 179 | The initial value was 100 but the response is 101, showing that the GPU memory has changed since initialization. 180 | 181 | ```bash 182 | localhost# echo hello | nc -u localhost 10000 -W 1 183 | 101 184 | ``` 185 | 186 | Use `nvidia-smi` to confirm that *counter* is running on a GPU. 187 | 188 | ```bash 189 | localhost# nvidia-smi --query --display=PIDS | grep $PID 190 | Process ID : 298027 191 | ``` 192 | 193 | Use `cuda-checkpoint` to suspend *counter*’s CUDA state. 194 | 195 | ```bash 196 | localhost# cuda-checkpoint --toggle --pid $PID 197 | ``` 198 | 199 | Use `nvidia-smi` to confirm that *counter* is no longer running on a GPU 200 | 201 | ```bash 202 | localhost# nvidia-smi --query --display=PIDS | grep $PID 203 | ``` 204 | 205 | Create a directory to hold the checkpoint image 206 | 207 | ```bash 208 | localhost# mkdir -p demo 209 | ``` 210 | 211 | Use `criu` to checkpoint *counter* 212 | 213 | ```bash 214 | localhost# criu dump --shell-job --images-dir demo --tree $PID 215 | [1]+ Killed ./counter 216 | ``` 217 | 218 | Confirm that *counter* is no longer running 219 | 220 | ```bash 221 | localhost# ps --pid $PID 222 | PID TTY TIME CMD 223 | ``` 224 | 225 | Use `criu` to restore *counter* 226 | 227 | ```bash 228 | localhost# criu restore --shell-job --restore-detached --images-dir demo 229 | ``` 230 | 231 | Use `cuda-checkpoint` to resume *counter*’s CUDA state 232 | 233 | ```bash 234 | localhost# cuda-checkpoint --toggle --pid $PID 235 | ``` 236 | 237 | Now that *counter* is fully restored, send it another packet. 238 | The response is 102, showing that earlier GPU operations were persisted correctly! 239 | 240 | ```bash 241 | localhost# echo hello | nc -u localhost 10000 -W 1 242 | 102 243 | ``` 244 | 245 | ## Functionality 246 | As of display driver version 570, checkpoint and restore functionality is still being actively developed. 247 | In particular, `cuda-checkpoint`: 248 | 249 | * is x64 only, 250 | * does not support UVM or IPC memory, 251 | * does not support GPU migration, 252 | * waits for already-submitted CUDA work to finish before completing a checkpoint, 253 | * does not attempt to keep the process in a good state if an error (such as the presence of a UVM allocation) is encountered during checkpoint or restore. 254 | 255 | These limitations will be addressed in subsequent display driver releases, 256 | and will not require an update to the `cuda-checkpoint` utility itself. 257 | The `cuda-checkpoint` utility simply exposes functionality that is contained in the driver. 258 | 259 | ## License 260 | By downloading or using the software, you agree to the terms of the [License Agreement for NVIDIA Software Development Kits — EULA](https://docs.nvidia.com/cuda/eula/index.html). 261 | -------------------------------------------------------------------------------- /bin/x86_64_Linux/LICENSE: -------------------------------------------------------------------------------- 1 | End User License Agreement 2 | -------------------------- 3 | 4 | NVIDIA Software License Agreement and CUDA Supplement to 5 | Software License Agreement. Last updated: October 8, 2021 6 | 7 | The CUDA Toolkit End User License Agreement applies to the 8 | NVIDIA CUDA Toolkit, the NVIDIA CUDA Samples, the NVIDIA 9 | Display Driver, NVIDIA Nsight tools (Visual Studio Edition), 10 | and the associated documentation on CUDA APIs, programming 11 | model and development tools. If you do not agree with the 12 | terms and conditions of the license agreement, then do not 13 | download or use the software. 14 | 15 | Last updated: October 8, 2021. 16 | 17 | 18 | Preface 19 | ------- 20 | 21 | The Software License Agreement in Chapter 1 and the Supplement 22 | in Chapter 2 contain license terms and conditions that govern 23 | the use of NVIDIA software. By accepting this agreement, you 24 | agree to comply with all the terms and conditions applicable 25 | to the product(s) included herein. 26 | 27 | 28 | NVIDIA Driver 29 | 30 | 31 | Description 32 | 33 | This package contains the operating system driver and 34 | fundamental system software components for NVIDIA GPUs. 35 | 36 | 37 | NVIDIA CUDA Toolkit 38 | 39 | 40 | Description 41 | 42 | The NVIDIA CUDA Toolkit provides command-line and graphical 43 | tools for building, debugging and optimizing the performance 44 | of applications accelerated by NVIDIA GPUs, runtime and math 45 | libraries, and documentation including programming guides, 46 | user manuals, and API references. 47 | 48 | 49 | Default Install Location of CUDA Toolkit 50 | 51 | Windows platform: 52 | 53 | %ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v#.# 54 | 55 | Linux platform: 56 | 57 | /usr/local/cuda-#.# 58 | 59 | Mac platform: 60 | 61 | /Developer/NVIDIA/CUDA-#.# 62 | 63 | 64 | NVIDIA CUDA Samples 65 | 66 | 67 | Description 68 | 69 | CUDA Samples are now located in 70 | https://github.com/nvidia/cuda-samples, which includes 71 | instructions for obtaining, building, and running the samples. 72 | They are no longer included in the CUDA toolkit. 73 | 74 | 75 | NVIDIA Nsight Visual Studio Edition (Windows only) 76 | 77 | 78 | Description 79 | 80 | NVIDIA Nsight Development Platform, Visual Studio Edition is a 81 | development environment integrated into Microsoft Visual 82 | Studio that provides tools for debugging, profiling, analyzing 83 | and optimizing your GPU computing and graphics applications. 84 | 85 | 86 | Default Install Location of Nsight Visual Studio Edition 87 | 88 | Windows platform: 89 | 90 | %ProgramFiles(x86)%\NVIDIA Corporation\Nsight Visual Studio Edition #.# 91 | 92 | 93 | 1. License Agreement for NVIDIA Software Development Kits 94 | --------------------------------------------------------- 95 | 96 | 97 | Important Notice—Read before downloading, installing, 98 | copying or using the licensed software: 99 | ------------------------------------------------------- 100 | 101 | This license agreement, including exhibits attached 102 | ("Agreement”) is a legal agreement between you and NVIDIA 103 | Corporation ("NVIDIA") and governs your use of a NVIDIA 104 | software development kit (“SDK”). 105 | 106 | Each SDK has its own set of software and materials, but here 107 | is a description of the types of items that may be included in 108 | a SDK: source code, header files, APIs, data sets and assets 109 | (examples include images, textures, models, scenes, videos, 110 | native API input/output files), binary software, sample code, 111 | libraries, utility programs, programming code and 112 | documentation. 113 | 114 | This Agreement can be accepted only by an adult of legal age 115 | of majority in the country in which the SDK is used. 116 | 117 | If you are entering into this Agreement on behalf of a company 118 | or other legal entity, you represent that you have the legal 119 | authority to bind the entity to this Agreement, in which case 120 | “you” will mean the entity you represent. 121 | 122 | If you don’t have the required age or authority to accept 123 | this Agreement, or if you don’t accept all the terms and 124 | conditions of this Agreement, do not download, install or use 125 | the SDK. 126 | 127 | You agree to use the SDK only for purposes that are permitted 128 | by (a) this Agreement, and (b) any applicable law, regulation 129 | or generally accepted practices or guidelines in the relevant 130 | jurisdictions. 131 | 132 | 133 | 1.1. License 134 | 135 | 136 | 1.1.1. License Grant 137 | 138 | Subject to the terms of this Agreement, NVIDIA hereby grants 139 | you a non-exclusive, non-transferable license, without the 140 | right to sublicense (except as expressly provided in this 141 | Agreement) to: 142 | 143 | 1. Install and use the SDK, 144 | 145 | 2. Modify and create derivative works of sample source code 146 | delivered in the SDK, and 147 | 148 | 3. Distribute those portions of the SDK that are identified 149 | in this Agreement as distributable, as incorporated in 150 | object code format into a software application that meets 151 | the distribution requirements indicated in this Agreement. 152 | 153 | 154 | 1.1.2. Distribution Requirements 155 | 156 | These are the distribution requirements for you to exercise 157 | the distribution grant: 158 | 159 | 1. Your application must have material additional 160 | functionality, beyond the included portions of the SDK. 161 | 162 | 2. The distributable portions of the SDK shall only be 163 | accessed by your application. 164 | 165 | 3. The following notice shall be included in modifications 166 | and derivative works of sample source code distributed: 167 | “This software contains source code provided by NVIDIA 168 | Corporation.” 169 | 170 | 4. Unless a developer tool is identified in this Agreement 171 | as distributable, it is delivered for your internal use 172 | only. 173 | 174 | 5. The terms under which you distribute your application 175 | must be consistent with the terms of this Agreement, 176 | including (without limitation) terms relating to the 177 | license grant and license restrictions and protection of 178 | NVIDIA’s intellectual property rights. Additionally, you 179 | agree that you will protect the privacy, security and 180 | legal rights of your application users. 181 | 182 | 6. You agree to notify NVIDIA in writing of any known or 183 | suspected distribution or use of the SDK not in compliance 184 | with the requirements of this Agreement, and to enforce 185 | the terms of your agreements with respect to distributed 186 | SDK. 187 | 188 | 189 | 1.1.3. Authorized Users 190 | 191 | You may allow employees and contractors of your entity or of 192 | your subsidiary(ies) to access and use the SDK from your 193 | secure network to perform work on your behalf. 194 | 195 | If you are an academic institution you may allow users 196 | enrolled or employed by the academic institution to access and 197 | use the SDK from your secure network. 198 | 199 | You are responsible for the compliance with the terms of this 200 | Agreement by your authorized users. If you become aware that 201 | your authorized users didn’t follow the terms of this 202 | Agreement, you agree to take reasonable steps to resolve the 203 | non-compliance and prevent new occurrences. 204 | 205 | 206 | 1.1.4. Pre-Release SDK 207 | 208 | The SDK versions identified as alpha, beta, preview or 209 | otherwise as pre-release, may not be fully functional, may 210 | contain errors or design flaws, and may have reduced or 211 | different security, privacy, accessibility, availability, and 212 | reliability standards relative to commercial versions of 213 | NVIDIA software and materials. Use of a pre-release SDK may 214 | result in unexpected results, loss of data, project delays or 215 | other unpredictable damage or loss. 216 | 217 | You may use a pre-release SDK at your own risk, understanding 218 | that pre-release SDKs are not intended for use in production 219 | or business-critical systems. 220 | 221 | NVIDIA may choose not to make available a commercial version 222 | of any pre-release SDK. NVIDIA may also choose to abandon 223 | development and terminate the availability of a pre-release 224 | SDK at any time without liability. 225 | 226 | 227 | 1.1.5. Updates 228 | 229 | NVIDIA may, at its option, make available patches, workarounds 230 | or other updates to this SDK. Unless the updates are provided 231 | with their separate governing terms, they are deemed part of 232 | the SDK licensed to you as provided in this Agreement. You 233 | agree that the form and content of the SDK that NVIDIA 234 | provides may change without prior notice to you. While NVIDIA 235 | generally maintains compatibility between versions, NVIDIA may 236 | in some cases make changes that introduce incompatibilities in 237 | future versions of the SDK. 238 | 239 | 240 | 1.1.6. Components Under Other Licenses 241 | 242 | The SDK may come bundled with, or otherwise include or be 243 | distributed with, NVIDIA or third-party components with 244 | separate legal notices or terms as may be described in 245 | proprietary notices accompanying the SDK. If and to the extent 246 | there is a conflict between the terms in this Agreement and 247 | the license terms associated with the component, the license 248 | terms associated with the components control only to the 249 | extent necessary to resolve the conflict. 250 | 251 | Subject to the other terms of this Agreement, you may use the 252 | SDK to develop and test applications released under Open 253 | Source Initiative (OSI) approved open source software 254 | licenses. 255 | 256 | 257 | 1.1.7. Reservation of Rights 258 | 259 | NVIDIA reserves all rights, title, and interest in and to the 260 | SDK, not expressly granted to you under this Agreement. 261 | 262 | 263 | 1.2. Limitations 264 | 265 | The following license limitations apply to your use of the 266 | SDK: 267 | 268 | 1. You may not reverse engineer, decompile or disassemble, 269 | or remove copyright or other proprietary notices from any 270 | portion of the SDK or copies of the SDK. 271 | 272 | 2. Except as expressly provided in this Agreement, you may 273 | not copy, sell, rent, sublicense, transfer, distribute, 274 | modify, or create derivative works of any portion of the 275 | SDK. For clarity, you may not distribute or sublicense the 276 | SDK as a stand-alone product. 277 | 278 | 3. Unless you have an agreement with NVIDIA for this 279 | purpose, you may not indicate that an application created 280 | with the SDK is sponsored or endorsed by NVIDIA. 281 | 282 | 4. You may not bypass, disable, or circumvent any 283 | encryption, security, digital rights management or 284 | authentication mechanism in the SDK. 285 | 286 | 5. You may not use the SDK in any manner that would cause it 287 | to become subject to an open source software license. As 288 | examples, licenses that require as a condition of use, 289 | modification, and/or distribution that the SDK be: 290 | 291 | a. Disclosed or distributed in source code form; 292 | 293 | b. Licensed for the purpose of making derivative works; 294 | or 295 | 296 | c. Redistributable at no charge. 297 | 298 | 6. You acknowledge that the SDK as delivered is not tested 299 | or certified by NVIDIA for use in connection with the 300 | design, construction, maintenance, and/or operation of any 301 | system where the use or failure of such system could 302 | result in a situation that threatens the safety of human 303 | life or results in catastrophic damages (each, a "Critical 304 | Application"). Examples of Critical Applications include 305 | use in avionics, navigation, autonomous vehicle 306 | applications, ai solutions for automotive products, 307 | military, medical, life support or other life critical 308 | applications. NVIDIA shall not be liable to you or any 309 | third party, in whole or in part, for any claims or 310 | damages arising from such uses. You are solely responsible 311 | for ensuring that any product or service developed with 312 | the SDK as a whole includes sufficient features to comply 313 | with all applicable legal and regulatory standards and 314 | requirements. 315 | 316 | 7. You agree to defend, indemnify and hold harmless NVIDIA 317 | and its affiliates, and their respective employees, 318 | contractors, agents, officers and directors, from and 319 | against any and all claims, damages, obligations, losses, 320 | liabilities, costs or debt, fines, restitutions and 321 | expenses (including but not limited to attorney’s fees 322 | and costs incident to establishing the right of 323 | indemnification) arising out of or related to products or 324 | services that use the SDK in or for Critical Applications, 325 | and for use of the SDK outside of the scope of this 326 | Agreement or not in compliance with its terms. 327 | 328 | 8. You may not reverse engineer, decompile or disassemble 329 | any portion of the output generated using SDK elements for 330 | the purpose of translating such output artifacts to target 331 | a non-NVIDIA platform. 332 | 333 | 334 | 1.3. Ownership 335 | 336 | 1. NVIDIA or its licensors hold all rights, title and 337 | interest in and to the SDK and its modifications and 338 | derivative works, including their respective intellectual 339 | property rights, subject to your rights under Section 340 | 1.3.2. This SDK may include software and materials from 341 | NVIDIA’s licensors, and these licensors are intended 342 | third party beneficiaries that may enforce this Agreement 343 | with respect to their intellectual property rights. 344 | 345 | 2. You hold all rights, title and interest in and to your 346 | applications and your derivative works of the sample 347 | source code delivered in the SDK, including their 348 | respective intellectual property rights, subject to 349 | NVIDIA’s rights under Section 1.3.1. 350 | 351 | 3. You may, but don’t have to, provide to NVIDIA 352 | suggestions, feature requests or other feedback regarding 353 | the SDK, including possible enhancements or modifications 354 | to the SDK. For any feedback that you voluntarily provide, 355 | you hereby grant NVIDIA and its affiliates a perpetual, 356 | non-exclusive, worldwide, irrevocable license to use, 357 | reproduce, modify, license, sublicense (through multiple 358 | tiers of sublicensees), and distribute (through multiple 359 | tiers of distributors) it without the payment of any 360 | royalties or fees to you. NVIDIA will use feedback at its 361 | choice. NVIDIA is constantly looking for ways to improve 362 | its products, so you may send feedback to NVIDIA through 363 | the developer portal at https://developer.nvidia.com. 364 | 365 | 366 | 1.4. No Warranties 367 | 368 | THE SDK IS PROVIDED BY NVIDIA “AS IS” AND “WITH ALL 369 | FAULTS.” TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND 370 | ITS AFFILIATES EXPRESSLY DISCLAIM ALL WARRANTIES OF ANY KIND 371 | OR NATURE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, 372 | BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 373 | FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, OR THE 374 | ABSENCE OF ANY DEFECTS THEREIN, WHETHER LATENT OR PATENT. NO 375 | WARRANTY IS MADE ON THE BASIS OF TRADE USAGE, COURSE OF 376 | DEALING OR COURSE OF TRADE. 377 | 378 | 379 | 1.5. Limitation of Liability 380 | 381 | TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND ITS 382 | AFFILIATES SHALL NOT BE LIABLE FOR ANY SPECIAL, INCIDENTAL, 383 | PUNITIVE OR CONSEQUENTIAL DAMAGES, OR ANY LOST PROFITS, LOSS 384 | OF USE, LOSS OF DATA OR LOSS OF GOODWILL, OR THE COSTS OF 385 | PROCURING SUBSTITUTE PRODUCTS, ARISING OUT OF OR IN CONNECTION 386 | WITH THIS AGREEMENT OR THE USE OR PERFORMANCE OF THE SDK, 387 | WHETHER SUCH LIABILITY ARISES FROM ANY CLAIM BASED UPON BREACH 388 | OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), 389 | PRODUCT LIABILITY OR ANY OTHER CAUSE OF ACTION OR THEORY OF 390 | LIABILITY. IN NO EVENT WILL NVIDIA’S AND ITS AFFILIATES 391 | TOTAL CUMULATIVE LIABILITY UNDER OR ARISING OUT OF THIS 392 | AGREEMENT EXCEED US$10.00. THE NATURE OF THE LIABILITY OR THE 393 | NUMBER OF CLAIMS OR SUITS SHALL NOT ENLARGE OR EXTEND THIS 394 | LIMIT. 395 | 396 | These exclusions and limitations of liability shall apply 397 | regardless if NVIDIA or its affiliates have been advised of 398 | the possibility of such damages, and regardless of whether a 399 | remedy fails its essential purpose. These exclusions and 400 | limitations of liability form an essential basis of the 401 | bargain between the parties, and, absent any of these 402 | exclusions or limitations of liability, the provisions of this 403 | Agreement, including, without limitation, the economic terms, 404 | would be substantially different. 405 | 406 | 407 | 1.6. Termination 408 | 409 | 1. This Agreement will continue to apply until terminated by 410 | either you or NVIDIA as described below. 411 | 412 | 2. If you want to terminate this Agreement, you may do so by 413 | stopping to use the SDK. 414 | 415 | 3. NVIDIA may, at any time, terminate this Agreement if: 416 | 417 | a. (i) you fail to comply with any term of this 418 | Agreement and the non-compliance is not fixed within 419 | thirty (30) days following notice from NVIDIA (or 420 | immediately if you violate NVIDIA’s intellectual 421 | property rights); 422 | 423 | b. (ii) you commence or participate in any legal 424 | proceeding against NVIDIA with respect to the SDK; or 425 | 426 | c. (iii) NVIDIA decides to no longer provide the SDK in 427 | a country or, in NVIDIA’s sole discretion, the 428 | continued use of it is no longer commercially viable. 429 | 430 | 4. Upon any termination of this Agreement, you agree to 431 | promptly discontinue use of the SDK and destroy all copies 432 | in your possession or control. Your prior distributions in 433 | accordance with this Agreement are not affected by the 434 | termination of this Agreement. Upon written request, you 435 | will certify in writing that you have complied with your 436 | commitments under this section. Upon any termination of 437 | this Agreement all provisions survive except for the 438 | license grant provisions. 439 | 440 | 441 | 1.7. General 442 | 443 | If you wish to assign this Agreement or your rights and 444 | obligations, including by merger, consolidation, dissolution 445 | or operation of law, contact NVIDIA to ask for permission. Any 446 | attempted assignment not approved by NVIDIA in writing shall 447 | be void and of no effect. NVIDIA may assign, delegate or 448 | transfer this Agreement and its rights and obligations, and if 449 | to a non-affiliate you will be notified. 450 | 451 | You agree to cooperate with NVIDIA and provide reasonably 452 | requested information to verify your compliance with this 453 | Agreement. 454 | 455 | This Agreement will be governed in all respects by the laws of 456 | the United States and of the State of Delaware as those laws 457 | are applied to contracts entered into and performed entirely 458 | within Delaware by Delaware residents, without regard to the 459 | conflicts of laws principles. The United Nations Convention on 460 | Contracts for the International Sale of Goods is specifically 461 | disclaimed. You agree to all terms of this Agreement in the 462 | English language. 463 | 464 | The state or federal courts residing in Santa Clara County, 465 | California shall have exclusive jurisdiction over any dispute 466 | or claim arising out of this Agreement. Notwithstanding this, 467 | you agree that NVIDIA shall still be allowed to apply for 468 | injunctive remedies or an equivalent type of urgent legal 469 | relief in any jurisdiction. 470 | 471 | If any court of competent jurisdiction determines that any 472 | provision of this Agreement is illegal, invalid or 473 | unenforceable, such provision will be construed as limited to 474 | the extent necessary to be consistent with and fully 475 | enforceable under the law and the remaining provisions will 476 | remain in full force and effect. Unless otherwise specified, 477 | remedies are cumulative. 478 | 479 | Each party acknowledges and agrees that the other is an 480 | independent contractor in the performance of this Agreement. 481 | 482 | The SDK has been developed entirely at private expense and is 483 | “commercial items” consisting of “commercial computer 484 | software” and “commercial computer software 485 | documentation” provided with RESTRICTED RIGHTS. Use, 486 | duplication or disclosure by the U.S. Government or a U.S. 487 | Government subcontractor is subject to the restrictions in 488 | this Agreement pursuant to DFARS 227.7202-3(a) or as set forth 489 | in subparagraphs (c)(1) and (2) of the Commercial Computer 490 | Software - Restricted Rights clause at FAR 52.227-19, as 491 | applicable. Contractor/manufacturer is NVIDIA, 2788 San Tomas 492 | Expressway, Santa Clara, CA 95051. 493 | 494 | The SDK is subject to United States export laws and 495 | regulations. You agree that you will not ship, transfer or 496 | export the SDK into any country, or use the SDK in any manner, 497 | prohibited by the United States Bureau of Industry and 498 | Security or economic sanctions regulations administered by the 499 | U.S. Department of Treasury’s Office of Foreign Assets 500 | Control (OFAC), or any applicable export laws, restrictions or 501 | regulations. These laws include restrictions on destinations, 502 | end users and end use. By accepting this Agreement, you 503 | confirm that you are not a resident or citizen of any country 504 | currently embargoed by the U.S. and that you are not otherwise 505 | prohibited from receiving the SDK. 506 | 507 | Any notice delivered by NVIDIA to you under this Agreement 508 | will be delivered via mail, email or fax. You agree that any 509 | notices that NVIDIA sends you electronically will satisfy any 510 | legal communication requirements. Please direct your legal 511 | notices or other correspondence to NVIDIA Corporation, 2788 512 | San Tomas Expressway, Santa Clara, California 95051, United 513 | States of America, Attention: Legal Department. 514 | 515 | This Agreement and any exhibits incorporated into this 516 | Agreement constitute the entire agreement of the parties with 517 | respect to the subject matter of this Agreement and supersede 518 | all prior negotiations or documentation exchanged between the 519 | parties relating to this SDK license. Any additional and/or 520 | conflicting terms on documents issued by you are null, void, 521 | and invalid. Any amendment or waiver under this Agreement 522 | shall be in writing and signed by representatives of both 523 | parties. 524 | 525 | 526 | 2. CUDA Toolkit Supplement to Software License Agreement for 527 | NVIDIA Software Development Kits 528 | ------------------------------------------------------------ 529 | 530 | The terms in this supplement govern your use of the NVIDIA 531 | CUDA Toolkit SDK under the terms of your license agreement 532 | (“Agreement”) as modified by this supplement. Capitalized 533 | terms used but not defined below have the meaning assigned to 534 | them in the Agreement. 535 | 536 | This supplement is an exhibit to the Agreement and is 537 | incorporated as an integral part of the Agreement. In the 538 | event of conflict between the terms in this supplement and the 539 | terms in the Agreement, the terms in this supplement govern. 540 | 541 | 542 | 2.1. License Scope 543 | 544 | The SDK is licensed for you to develop applications only for 545 | use in systems with NVIDIA GPUs. 546 | 547 | 548 | 2.2. Distribution 549 | 550 | The portions of the SDK that are distributable under the 551 | Agreement are listed in Attachment A. 552 | 553 | 554 | 2.3. Operating Systems 555 | 556 | Those portions of the SDK designed exclusively for use on the 557 | Linux or FreeBSD operating systems, or other operating systems 558 | derived from the source code to these operating systems, may 559 | be copied and redistributed for use in accordance with this 560 | Agreement, provided that the object code files are not 561 | modified in any way (except for unzipping of compressed 562 | files). 563 | 564 | 565 | 2.4. Audio and Video Encoders and Decoders 566 | 567 | You acknowledge and agree that it is your sole responsibility 568 | to obtain any additional third-party licenses required to 569 | make, have made, use, have used, sell, import, and offer for 570 | sale your products or services that include or incorporate any 571 | third-party software and content relating to audio and/or 572 | video encoders and decoders from, including but not limited 573 | to, Microsoft, Thomson, Fraunhofer IIS, Sisvel S.p.A., 574 | MPEG-LA, and Coding Technologies. NVIDIA does not grant to you 575 | under this Agreement any necessary patent or other rights with 576 | respect to any audio and/or video encoders and decoders. 577 | 578 | 579 | 2.5. Licensing 580 | 581 | If the distribution terms in this Agreement are not suitable 582 | for your organization, or for any questions regarding this 583 | Agreement, please contact NVIDIA at 584 | nvidia-compute-license-questions@nvidia.com. 585 | 586 | 587 | 2.6. Attachment A 588 | 589 | The following CUDA Toolkit files may be distributed with 590 | Licensee Applications developed by you, including certain 591 | variations of these files that have version number or 592 | architecture specific information embedded in the file name - 593 | as an example only, for release version 9.0 of the 64-bit 594 | Windows software, the file cudart64_90.dll is redistributable. 595 | 596 | Component 597 | 598 | CUDA Runtime 599 | 600 | Windows 601 | 602 | cudart.dll, cudart_static.lib, cudadevrt.lib 603 | 604 | Mac OSX 605 | 606 | libcudart.dylib, libcudart_static.a, libcudadevrt.a 607 | 608 | Linux 609 | 610 | libcudart.so, libcudart_static.a, libcudadevrt.a 611 | 612 | Android 613 | 614 | libcudart.so, libcudart_static.a, libcudadevrt.a 615 | 616 | Component 617 | 618 | CUDA FFT Library 619 | 620 | Windows 621 | 622 | cufft.dll, cufftw.dll, cufft.lib, cufftw.lib 623 | 624 | Mac OSX 625 | 626 | libcufft.dylib, libcufft_static.a, libcufftw.dylib, 627 | libcufftw_static.a 628 | 629 | Linux 630 | 631 | libcufft.so, libcufft_static.a, libcufftw.so, 632 | libcufftw_static.a 633 | 634 | Android 635 | 636 | libcufft.so, libcufft_static.a, libcufftw.so, 637 | libcufftw_static.a 638 | 639 | Component 640 | 641 | CUDA BLAS Library 642 | 643 | Windows 644 | 645 | cublas.dll, cublasLt.dll 646 | 647 | Mac OSX 648 | 649 | libcublas.dylib, libcublasLt.dylib, libcublas_static.a, 650 | libcublasLt_static.a 651 | 652 | Linux 653 | 654 | libcublas.so, libcublasLt.so, libcublas_static.a, 655 | libcublasLt_static.a 656 | 657 | Android 658 | 659 | libcublas.so, libcublasLt.so, libcublas_static.a, 660 | libcublasLt_static.a 661 | 662 | Component 663 | 664 | NVIDIA "Drop-in" BLAS Library 665 | 666 | Windows 667 | 668 | nvblas.dll 669 | 670 | Mac OSX 671 | 672 | libnvblas.dylib 673 | 674 | Linux 675 | 676 | libnvblas.so 677 | 678 | Component 679 | 680 | CUDA Sparse Matrix Library 681 | 682 | Windows 683 | 684 | cusparse.dll, cusparse.lib 685 | 686 | Mac OSX 687 | 688 | libcusparse.dylib, libcusparse_static.a 689 | 690 | Linux 691 | 692 | libcusparse.so, libcusparse_static.a 693 | 694 | Android 695 | 696 | libcusparse.so, libcusparse_static.a 697 | 698 | Component 699 | 700 | CUDA Linear Solver Library 701 | 702 | Windows 703 | 704 | cusolver.dll, cusolver.lib 705 | 706 | Mac OSX 707 | 708 | libcusolver.dylib, libcusolver_static.a 709 | 710 | Linux 711 | 712 | libcusolver.so, libcusolver_static.a 713 | 714 | Android 715 | 716 | libcusolver.so, libcusolver_static.a 717 | 718 | Component 719 | 720 | CUDA Random Number Generation Library 721 | 722 | Windows 723 | 724 | curand.dll, curand.lib 725 | 726 | Mac OSX 727 | 728 | libcurand.dylib, libcurand_static.a 729 | 730 | Linux 731 | 732 | libcurand.so, libcurand_static.a 733 | 734 | Android 735 | 736 | libcurand.so, libcurand_static.a 737 | 738 | Component 739 | 740 | NVIDIA Performance Primitives Library 741 | 742 | Windows 743 | 744 | nppc.dll, nppc.lib, nppial.dll, nppial.lib, nppicc.dll, 745 | nppicc.lib, nppicom.dll, nppicom.lib, nppidei.dll, 746 | nppidei.lib, nppif.dll, nppif.lib, nppig.dll, nppig.lib, 747 | nppim.dll, nppim.lib, nppist.dll, nppist.lib, nppisu.dll, 748 | nppisu.lib, nppitc.dll, nppitc.lib, npps.dll, npps.lib 749 | 750 | Mac OSX 751 | 752 | libnppc.dylib, libnppc_static.a, libnppial.dylib, 753 | libnppial_static.a, libnppicc.dylib, libnppicc_static.a, 754 | libnppicom.dylib, libnppicom_static.a, libnppidei.dylib, 755 | libnppidei_static.a, libnppif.dylib, libnppif_static.a, 756 | libnppig.dylib, libnppig_static.a, libnppim.dylib, 757 | libnppisu_static.a, libnppitc.dylib, libnppitc_static.a, 758 | libnpps.dylib, libnpps_static.a 759 | 760 | Linux 761 | 762 | libnppc.so, libnppc_static.a, libnppial.so, 763 | libnppial_static.a, libnppicc.so, libnppicc_static.a, 764 | libnppicom.so, libnppicom_static.a, libnppidei.so, 765 | libnppidei_static.a, libnppif.so, libnppif_static.a 766 | libnppig.so, libnppig_static.a, libnppim.so, 767 | libnppim_static.a, libnppist.so, libnppist_static.a, 768 | libnppisu.so, libnppisu_static.a, libnppitc.so 769 | libnppitc_static.a, libnpps.so, libnpps_static.a 770 | 771 | Android 772 | 773 | libnppc.so, libnppc_static.a, libnppial.so, 774 | libnppial_static.a, libnppicc.so, libnppicc_static.a, 775 | libnppicom.so, libnppicom_static.a, libnppidei.so, 776 | libnppidei_static.a, libnppif.so, libnppif_static.a 777 | libnppig.so, libnppig_static.a, libnppim.so, 778 | libnppim_static.a, libnppist.so, libnppist_static.a, 779 | libnppisu.so, libnppisu_static.a, libnppitc.so 780 | libnppitc_static.a, libnpps.so, libnpps_static.a 781 | 782 | Component 783 | 784 | NVIDIA JPEG Library 785 | 786 | Windows 787 | 788 | nvjpeg.lib, nvjpeg.dll 789 | 790 | Linux 791 | 792 | libnvjpeg.so, libnvjpeg_static.a 793 | 794 | Component 795 | 796 | Internal common library required for statically linking to 797 | cuBLAS, cuSPARSE, cuFFT, cuRAND, nvJPEG and NPP 798 | 799 | Mac OSX 800 | 801 | libculibos.a 802 | 803 | Linux 804 | 805 | libculibos.a 806 | 807 | Component 808 | 809 | NVIDIA Runtime Compilation Library and Header 810 | 811 | All 812 | 813 | nvrtc.h 814 | 815 | Windows 816 | 817 | nvrtc.dll, nvrtc-builtins.dll 818 | 819 | Mac OSX 820 | 821 | libnvrtc.dylib, libnvrtc-builtins.dylib 822 | 823 | Linux 824 | 825 | libnvrtc.so, libnvrtc-builtins.so 826 | 827 | Component 828 | 829 | NVIDIA Optimizing Compiler Library 830 | 831 | Windows 832 | 833 | nvvm.dll 834 | 835 | Mac OSX 836 | 837 | libnvvm.dylib 838 | 839 | Linux 840 | 841 | libnvvm.so 842 | 843 | Component 844 | 845 | NVIDIA Common Device Math Functions Library 846 | 847 | Windows 848 | 849 | libdevice.10.bc 850 | 851 | Mac OSX 852 | 853 | libdevice.10.bc 854 | 855 | Linux 856 | 857 | libdevice.10.bc 858 | 859 | Component 860 | 861 | CUDA Occupancy Calculation Header Library 862 | 863 | All 864 | 865 | cuda_occupancy.h 866 | 867 | Component 868 | 869 | CUDA Half Precision Headers 870 | 871 | All 872 | 873 | cuda_fp16.h, cuda_fp16.hpp 874 | 875 | Component 876 | 877 | CUDA Profiling Tools Interface (CUPTI) Library 878 | 879 | Windows 880 | 881 | cupti.dll 882 | 883 | Mac OSX 884 | 885 | libcupti.dylib 886 | 887 | Linux 888 | 889 | libcupti.so 890 | 891 | Component 892 | 893 | NVIDIA Tools Extension Library 894 | 895 | Windows 896 | 897 | nvToolsExt.dll, nvToolsExt.lib 898 | 899 | Mac OSX 900 | 901 | libnvToolsExt.dylib 902 | 903 | Linux 904 | 905 | libnvToolsExt.so 906 | 907 | Component 908 | 909 | NVIDIA CUDA Driver Libraries 910 | 911 | Linux 912 | 913 | libcuda.so, libnvidia-ptxjitcompiler.so 914 | 915 | Component 916 | 917 | NVIDIA CUDA File IO Libraries and Header 918 | 919 | All 920 | 921 | cufile.h 922 | 923 | Linux 924 | 925 | libcufile.so, libcufile_rdma.so, libcufile_static.a, 926 | libcufile_rdma_static.a 927 | 928 | The NVIDIA CUDA Driver Libraries are only distributable in 929 | applications that meet this criteria: 930 | 931 | 1. The application was developed starting from a NVIDIA CUDA 932 | container obtained from Docker Hub or the NVIDIA GPU 933 | Cloud, and 934 | 935 | 2. The resulting application is packaged as a Docker 936 | container and distributed to users on Docker Hub or the 937 | NVIDIA GPU Cloud only. 938 | 939 | In addition to the rights above, for parties that are 940 | developing software intended solely for use on Jetson 941 | development kits or Jetson modules, and running Linux for 942 | Tegra software, the following shall apply: 943 | 944 | * The SDK may be distributed in its entirety, as provided by 945 | NVIDIA, and without separation of its components, for you 946 | and/or your licensees to create software development kits 947 | for use only on the Jetson platform and running Linux for 948 | Tegra software. 949 | 950 | 951 | 2.7. Attachment B 952 | 953 | 954 | Additional Licensing Obligations 955 | 956 | The following third party components included in the SOFTWARE 957 | are licensed to Licensee pursuant to the following terms and 958 | conditions: 959 | 960 | 1. Licensee's use of the GDB third party component is 961 | subject to the terms and conditions of GNU GPL v3: 962 | 963 | This product includes copyrighted third-party software licensed 964 | under the terms of the GNU General Public License v3 ("GPL v3"). 965 | All third-party software packages are copyright by their respective 966 | authors. GPL v3 terms and conditions are hereby incorporated into 967 | the Agreement by this reference: http://www.gnu.org/licenses/gpl.txt 968 | 969 | Consistent with these licensing requirements, the software 970 | listed below is provided under the terms of the specified 971 | open source software licenses. To obtain source code for 972 | software provided under licenses that require 973 | redistribution of source code, including the GNU General 974 | Public License (GPL) and GNU Lesser General Public License 975 | (LGPL), contact oss-requests@nvidia.com. This offer is 976 | valid for a period of three (3) years from the date of the 977 | distribution of this product by NVIDIA CORPORATION. 978 | 979 | Component License 980 | CUDA-GDB GPL v3 981 | 982 | 2. Licensee represents and warrants that any and all third 983 | party licensing and/or royalty payment obligations in 984 | connection with Licensee's use of the H.264 video codecs 985 | are solely the responsibility of Licensee. 986 | 987 | 3. Licensee's use of the Thrust library is subject to the 988 | terms and conditions of the Apache License Version 2.0. 989 | All third-party software packages are copyright by their 990 | respective authors. Apache License Version 2.0 terms and 991 | conditions are hereby incorporated into the Agreement by 992 | this reference. 993 | http://www.apache.org/licenses/LICENSE-2.0.html 994 | 995 | In addition, Licensee acknowledges the following notice: 996 | Thrust includes source code from the Boost Iterator, 997 | Tuple, System, and Random Number libraries. 998 | 999 | Boost Software License - Version 1.0 - August 17th, 2003 1000 | . . . . 1001 | 1002 | Permission is hereby granted, free of charge, to any person or 1003 | organization obtaining a copy of the software and accompanying 1004 | documentation covered by this license (the "Software") to use, 1005 | reproduce, display, distribute, execute, and transmit the Software, 1006 | and to prepare derivative works of the Software, and to permit 1007 | third-parties to whom the Software is furnished to do so, all 1008 | subject to the following: 1009 | 1010 | The copyright notices in the Software and this entire statement, 1011 | including the above license grant, this restriction and the following 1012 | disclaimer, must be included in all copies of the Software, in whole 1013 | or in part, and all derivative works of the Software, unless such 1014 | copies or derivative works are solely in the form of machine-executable 1015 | object code generated by a source language processor. 1016 | 1017 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1018 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1019 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND 1020 | NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR 1021 | ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR 1022 | OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING 1023 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 1024 | OTHER DEALINGS IN THE SOFTWARE. 1025 | 1026 | 4. Licensee's use of the LLVM third party component is 1027 | subject to the following terms and conditions: 1028 | 1029 | ====================================================== 1030 | LLVM Release License 1031 | ====================================================== 1032 | University of Illinois/NCSA 1033 | Open Source License 1034 | 1035 | Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign. 1036 | All rights reserved. 1037 | 1038 | Developed by: 1039 | 1040 | LLVM Team 1041 | 1042 | University of Illinois at Urbana-Champaign 1043 | 1044 | http://llvm.org 1045 | 1046 | Permission is hereby granted, free of charge, to any person obtaining a copy 1047 | of this software and associated documentation files (the "Software"), to 1048 | deal with the Software without restriction, including without limitation the 1049 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 1050 | sell copies of the Software, and to permit persons to whom the Software is 1051 | furnished to do so, subject to the following conditions: 1052 | 1053 | * Redistributions of source code must retain the above copyright notice, 1054 | this list of conditions and the following disclaimers. 1055 | 1056 | * Redistributions in binary form must reproduce the above copyright 1057 | notice, this list of conditions and the following disclaimers in the 1058 | documentation and/or other materials provided with the distribution. 1059 | 1060 | * Neither the names of the LLVM Team, University of Illinois at Urbana- 1061 | Champaign, nor the names of its contributors may be used to endorse or 1062 | promote products derived from this Software without specific prior 1063 | written permission. 1064 | 1065 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1066 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1067 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1068 | THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 1069 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 1070 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 1071 | DEALINGS WITH THE SOFTWARE. 1072 | 1073 | 5. Licensee's use of the PCRE third party component is 1074 | subject to the following terms and conditions: 1075 | 1076 | ------------ 1077 | PCRE LICENCE 1078 | ------------ 1079 | PCRE is a library of functions to support regular expressions whose syntax 1080 | and semantics are as close as possible to those of the Perl 5 language. 1081 | Release 8 of PCRE is distributed under the terms of the "BSD" licence, as 1082 | specified below. The documentation for PCRE, supplied in the "doc" 1083 | directory, is distributed under the same terms as the software itself. The 1084 | basic library functions are written in C and are freestanding. Also 1085 | included in the distribution is a set of C++ wrapper functions, and a just- 1086 | in-time compiler that can be used to optimize pattern matching. These are 1087 | both optional features that can be omitted when the library is built. 1088 | 1089 | THE BASIC LIBRARY FUNCTIONS 1090 | --------------------------- 1091 | Written by: Philip Hazel 1092 | Email local part: ph10 1093 | Email domain: cam.ac.uk 1094 | University of Cambridge Computing Service, 1095 | Cambridge, England. 1096 | Copyright (c) 1997-2012 University of Cambridge 1097 | All rights reserved. 1098 | 1099 | PCRE JUST-IN-TIME COMPILATION SUPPORT 1100 | ------------------------------------- 1101 | Written by: Zoltan Herczeg 1102 | Email local part: hzmester 1103 | Emain domain: freemail.hu 1104 | Copyright(c) 2010-2012 Zoltan Herczeg 1105 | All rights reserved. 1106 | 1107 | STACK-LESS JUST-IN-TIME COMPILER 1108 | -------------------------------- 1109 | Written by: Zoltan Herczeg 1110 | Email local part: hzmester 1111 | Emain domain: freemail.hu 1112 | Copyright(c) 2009-2012 Zoltan Herczeg 1113 | All rights reserved. 1114 | 1115 | THE C++ WRAPPER FUNCTIONS 1116 | ------------------------- 1117 | Contributed by: Google Inc. 1118 | Copyright (c) 2007-2012, Google Inc. 1119 | All rights reserved. 1120 | 1121 | THE "BSD" LICENCE 1122 | ----------------- 1123 | Redistribution and use in source and binary forms, with or without 1124 | modification, are permitted provided that the following conditions are met: 1125 | 1126 | * Redistributions of source code must retain the above copyright notice, 1127 | this list of conditions and the following disclaimer. 1128 | 1129 | * Redistributions in binary form must reproduce the above copyright 1130 | notice, this list of conditions and the following disclaimer in the 1131 | documentation and/or other materials provided with the distribution. 1132 | 1133 | * Neither the name of the University of Cambridge nor the name of Google 1134 | Inc. nor the names of their contributors may be used to endorse or 1135 | promote products derived from this software without specific prior 1136 | written permission. 1137 | 1138 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 1139 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1140 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1141 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 1142 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1143 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1144 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 1145 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 1146 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 1147 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1148 | POSSIBILITY OF SUCH DAMAGE. 1149 | 1150 | 6. Some of the cuBLAS library routines were written by or 1151 | derived from code written by Vasily Volkov and are subject 1152 | to the Modified Berkeley Software Distribution License as 1153 | follows: 1154 | 1155 | Copyright (c) 2007-2009, Regents of the University of California 1156 | 1157 | All rights reserved. 1158 | 1159 | Redistribution and use in source and binary forms, with or without 1160 | modification, are permitted provided that the following conditions are 1161 | met: 1162 | * Redistributions of source code must retain the above copyright 1163 | notice, this list of conditions and the following disclaimer. 1164 | * Redistributions in binary form must reproduce the above 1165 | copyright notice, this list of conditions and the following 1166 | disclaimer in the documentation and/or other materials provided 1167 | with the distribution. 1168 | * Neither the name of the University of California, Berkeley nor 1169 | the names of its contributors may be used to endorse or promote 1170 | products derived from this software without specific prior 1171 | written permission. 1172 | 1173 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR 1174 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1175 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1176 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 1177 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1178 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1179 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1180 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1181 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1182 | IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1183 | POSSIBILITY OF SUCH DAMAGE. 1184 | 1185 | 7. Some of the cuBLAS library routines were written by or 1186 | derived from code written by Davide Barbieri and are 1187 | subject to the Modified Berkeley Software Distribution 1188 | License as follows: 1189 | 1190 | Copyright (c) 2008-2009 Davide Barbieri @ University of Rome Tor Vergata. 1191 | 1192 | All rights reserved. 1193 | 1194 | Redistribution and use in source and binary forms, with or without 1195 | modification, are permitted provided that the following conditions are 1196 | met: 1197 | * Redistributions of source code must retain the above copyright 1198 | notice, this list of conditions and the following disclaimer. 1199 | * Redistributions in binary form must reproduce the above 1200 | copyright notice, this list of conditions and the following 1201 | disclaimer in the documentation and/or other materials provided 1202 | with the distribution. 1203 | * The name of the author may not be used to endorse or promote 1204 | products derived from this software without specific prior 1205 | written permission. 1206 | 1207 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR 1208 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1209 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1210 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 1211 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1212 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 1213 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 1214 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 1215 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 1216 | IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1217 | POSSIBILITY OF SUCH DAMAGE. 1218 | 1219 | 8. Some of the cuBLAS library routines were derived from 1220 | code developed by the University of Tennessee and are 1221 | subject to the Modified Berkeley Software Distribution 1222 | License as follows: 1223 | 1224 | Copyright (c) 2010 The University of Tennessee. 1225 | 1226 | All rights reserved. 1227 | 1228 | Redistribution and use in source and binary forms, with or without 1229 | modification, are permitted provided that the following conditions are 1230 | met: 1231 | * Redistributions of source code must retain the above copyright 1232 | notice, this list of conditions and the following disclaimer. 1233 | * Redistributions in binary form must reproduce the above 1234 | copyright notice, this list of conditions and the following 1235 | disclaimer listed in this license in the documentation and/or 1236 | other materials provided with the distribution. 1237 | * Neither the name of the copyright holders nor the names of its 1238 | contributors may be used to endorse or promote products derived 1239 | from this software without specific prior written permission. 1240 | 1241 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1242 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1243 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1244 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1245 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1246 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1247 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1248 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1249 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1250 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1251 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1252 | 1253 | 9. Some of the cuBLAS library routines were written by or 1254 | derived from code written by Jonathan Hogg and are subject 1255 | to the Modified Berkeley Software Distribution License as 1256 | follows: 1257 | 1258 | Copyright (c) 2012, The Science and Technology Facilities Council (STFC). 1259 | 1260 | All rights reserved. 1261 | 1262 | Redistribution and use in source and binary forms, with or without 1263 | modification, are permitted provided that the following conditions are 1264 | met: 1265 | * Redistributions of source code must retain the above copyright 1266 | notice, this list of conditions and the following disclaimer. 1267 | * Redistributions in binary form must reproduce the above 1268 | copyright notice, this list of conditions and the following 1269 | disclaimer in the documentation and/or other materials provided 1270 | with the distribution. 1271 | * Neither the name of the STFC nor the names of its contributors 1272 | may be used to endorse or promote products derived from this 1273 | software without specific prior written permission. 1274 | 1275 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1276 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1277 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1278 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE STFC BE 1279 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1280 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1281 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 1282 | BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 1283 | WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 1284 | OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 1285 | IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1286 | 1287 | 10. Some of the cuBLAS library routines were written by or 1288 | derived from code written by Ahmad M. Abdelfattah, David 1289 | Keyes, and Hatem Ltaief, and are subject to the Apache 1290 | License, Version 2.0, as follows: 1291 | 1292 | -- (C) Copyright 2013 King Abdullah University of Science and Technology 1293 | Authors: 1294 | Ahmad Abdelfattah (ahmad.ahmad@kaust.edu.sa) 1295 | David Keyes (david.keyes@kaust.edu.sa) 1296 | Hatem Ltaief (hatem.ltaief@kaust.edu.sa) 1297 | 1298 | Redistribution and use in source and binary forms, with or without 1299 | modification, are permitted provided that the following conditions 1300 | are met: 1301 | 1302 | * Redistributions of source code must retain the above copyright 1303 | notice, this list of conditions and the following disclaimer. 1304 | * Redistributions in binary form must reproduce the above copyright 1305 | notice, this list of conditions and the following disclaimer in the 1306 | documentation and/or other materials provided with the distribution. 1307 | * Neither the name of the King Abdullah University of Science and 1308 | Technology nor the names of its contributors may be used to endorse 1309 | or promote products derived from this software without specific prior 1310 | written permission. 1311 | 1312 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1313 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1314 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1315 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1316 | HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1317 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1318 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1319 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1320 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1321 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1322 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 1323 | 1324 | 11. Some of the cuSPARSE library routines were written by or 1325 | derived from code written by Li-Wen Chang and are subject 1326 | to the NCSA Open Source License as follows: 1327 | 1328 | Copyright (c) 2012, University of Illinois. 1329 | 1330 | All rights reserved. 1331 | 1332 | Developed by: IMPACT Group, University of Illinois, http://impact.crhc.illinois.edu 1333 | 1334 | Permission is hereby granted, free of charge, to any person obtaining 1335 | a copy of this software and associated documentation files (the 1336 | "Software"), to deal with the Software without restriction, including 1337 | without limitation the rights to use, copy, modify, merge, publish, 1338 | distribute, sublicense, and/or sell copies of the Software, and to 1339 | permit persons to whom the Software is furnished to do so, subject to 1340 | the following conditions: 1341 | * Redistributions of source code must retain the above copyright 1342 | notice, this list of conditions and the following disclaimer. 1343 | * Redistributions in binary form must reproduce the above 1344 | copyright notice, this list of conditions and the following 1345 | disclaimers in the documentation and/or other materials provided 1346 | with the distribution. 1347 | * Neither the names of IMPACT Group, University of Illinois, nor 1348 | the names of its contributors may be used to endorse or promote 1349 | products derived from this Software without specific prior 1350 | written permission. 1351 | 1352 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1353 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1354 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 1355 | NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT 1356 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 1357 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 1358 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE 1359 | SOFTWARE. 1360 | 1361 | 12. Some of the cuRAND library routines were written by or 1362 | derived from code written by Mutsuo Saito and Makoto 1363 | Matsumoto and are subject to the following license: 1364 | 1365 | Copyright (c) 2009, 2010 Mutsuo Saito, Makoto Matsumoto and Hiroshima 1366 | University. All rights reserved. 1367 | 1368 | Copyright (c) 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima 1369 | University and University of Tokyo. All rights reserved. 1370 | 1371 | Redistribution and use in source and binary forms, with or without 1372 | modification, are permitted provided that the following conditions are 1373 | met: 1374 | * Redistributions of source code must retain the above copyright 1375 | notice, this list of conditions and the following disclaimer. 1376 | * Redistributions in binary form must reproduce the above 1377 | copyright notice, this list of conditions and the following 1378 | disclaimer in the documentation and/or other materials provided 1379 | with the distribution. 1380 | * Neither the name of the Hiroshima University nor the names of 1381 | its contributors may be used to endorse or promote products 1382 | derived from this software without specific prior written 1383 | permission. 1384 | 1385 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1386 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1387 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1388 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1389 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1390 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1391 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1392 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1393 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1394 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1395 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1396 | 1397 | 13. Some of the cuRAND library routines were derived from 1398 | code developed by D. E. Shaw Research and are subject to 1399 | the following license: 1400 | 1401 | Copyright 2010-2011, D. E. Shaw Research. 1402 | 1403 | All rights reserved. 1404 | 1405 | Redistribution and use in source and binary forms, with or without 1406 | modification, are permitted provided that the following conditions are 1407 | met: 1408 | * Redistributions of source code must retain the above copyright 1409 | notice, this list of conditions, and the following disclaimer. 1410 | * Redistributions in binary form must reproduce the above 1411 | copyright notice, this list of conditions, and the following 1412 | disclaimer in the documentation and/or other materials provided 1413 | with the distribution. 1414 | * Neither the name of D. E. Shaw Research nor the names of its 1415 | contributors may be used to endorse or promote products derived 1416 | from this software without specific prior written permission. 1417 | 1418 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1419 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1420 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1421 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1422 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1423 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1424 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1425 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1426 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1427 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1428 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1429 | 1430 | 14. Some of the Math library routines were written by or 1431 | derived from code developed by Norbert Juffa and are 1432 | subject to the following license: 1433 | 1434 | Copyright (c) 2015-2017, Norbert Juffa 1435 | All rights reserved. 1436 | 1437 | Redistribution and use in source and binary forms, with or without 1438 | modification, are permitted provided that the following conditions 1439 | are met: 1440 | 1441 | 1. Redistributions of source code must retain the above copyright 1442 | notice, this list of conditions and the following disclaimer. 1443 | 1444 | 2. Redistributions in binary form must reproduce the above copyright 1445 | notice, this list of conditions and the following disclaimer in the 1446 | documentation and/or other materials provided with the distribution. 1447 | 1448 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1449 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1450 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1451 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1452 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1453 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1454 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1455 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1456 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1457 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1458 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1459 | 1460 | 15. Licensee's use of the lz4 third party component is 1461 | subject to the following terms and conditions: 1462 | 1463 | Copyright (C) 2011-2013, Yann Collet. 1464 | BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) 1465 | 1466 | Redistribution and use in source and binary forms, with or without 1467 | modification, are permitted provided that the following conditions are 1468 | met: 1469 | 1470 | * Redistributions of source code must retain the above copyright 1471 | notice, this list of conditions and the following disclaimer. 1472 | * Redistributions in binary form must reproduce the above 1473 | copyright notice, this list of conditions and the following disclaimer 1474 | in the documentation and/or other materials provided with the 1475 | distribution. 1476 | 1477 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1478 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1479 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1480 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1481 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1482 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1483 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1484 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1485 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1486 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1487 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1488 | 1489 | 16. The NPP library uses code from the Boost Math Toolkit, 1490 | and is subject to the following license: 1491 | 1492 | Boost Software License - Version 1.0 - August 17th, 2003 1493 | . . . . 1494 | 1495 | Permission is hereby granted, free of charge, to any person or 1496 | organization obtaining a copy of the software and accompanying 1497 | documentation covered by this license (the "Software") to use, 1498 | reproduce, display, distribute, execute, and transmit the Software, 1499 | and to prepare derivative works of the Software, and to permit 1500 | third-parties to whom the Software is furnished to do so, all 1501 | subject to the following: 1502 | 1503 | The copyright notices in the Software and this entire statement, 1504 | including the above license grant, this restriction and the following 1505 | disclaimer, must be included in all copies of the Software, in whole 1506 | or in part, and all derivative works of the Software, unless such 1507 | copies or derivative works are solely in the form of machine-executable 1508 | object code generated by a source language processor. 1509 | 1510 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1511 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1512 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND 1513 | NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR 1514 | ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR 1515 | OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING 1516 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 1517 | OTHER DEALINGS IN THE SOFTWARE. 1518 | 1519 | 17. Portions of the Nsight Eclipse Edition is subject to the 1520 | following license: 1521 | 1522 | The Eclipse Foundation makes available all content in this plug-in 1523 | ("Content"). Unless otherwise indicated below, the Content is provided 1524 | to you under the terms and conditions of the Eclipse Public License 1525 | Version 1.0 ("EPL"). A copy of the EPL is available at http:// 1526 | www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" 1527 | will mean the Content. 1528 | 1529 | If you did not receive this Content directly from the Eclipse 1530 | Foundation, the Content is being redistributed by another party 1531 | ("Redistributor") and different terms and conditions may apply to your 1532 | use of any object code in the Content. Check the Redistributor's 1533 | license that was provided with the Content. If no such license exists, 1534 | contact the Redistributor. Unless otherwise indicated below, the terms 1535 | and conditions of the EPL still apply to any source code in the 1536 | Content and such source code may be obtained at http://www.eclipse.org. 1537 | 1538 | 18. Some of the cuBLAS library routines uses code from 1539 | OpenAI, which is subject to the following license: 1540 | 1541 | License URL 1542 | https://github.com/openai/openai-gemm/blob/master/LICENSE 1543 | 1544 | License Text 1545 | The MIT License 1546 | 1547 | Copyright (c) 2016 OpenAI (http://openai.com), 2016 Google Inc. 1548 | 1549 | Permission is hereby granted, free of charge, to any person obtaining a copy 1550 | of this software and associated documentation files (the "Software"), to deal 1551 | in the Software without restriction, including without limitation the rights 1552 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1553 | copies of the Software, and to permit persons to whom the Software is 1554 | furnished to do so, subject to the following conditions: 1555 | 1556 | The above copyright notice and this permission notice shall be included in 1557 | all copies or substantial portions of the Software. 1558 | 1559 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1560 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1561 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1562 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1563 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1564 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 1565 | THE SOFTWARE. 1566 | 1567 | 19. Licensee's use of the Visual Studio Setup Configuration 1568 | Samples is subject to the following license: 1569 | 1570 | The MIT License (MIT) 1571 | Copyright (C) Microsoft Corporation. All rights reserved. 1572 | 1573 | Permission is hereby granted, free of charge, to any person 1574 | obtaining a copy of this software and associated documentation 1575 | files (the "Software"), to deal in the Software without restriction, 1576 | including without limitation the rights to use, copy, modify, merge, 1577 | publish, distribute, sublicense, and/or sell copies of the Software, 1578 | and to permit persons to whom the Software is furnished to do so, 1579 | subject to the following conditions: 1580 | 1581 | The above copyright notice and this permission notice shall be included 1582 | in all copies or substantial portions of the Software. 1583 | 1584 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 1585 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1586 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1587 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1588 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1589 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1590 | 1591 | 20. Licensee's use of linmath.h header for CPU functions for 1592 | GL vector/matrix operations from lunarG is subject to the 1593 | Apache License Version 2.0. 1594 | 1595 | 21. The DX12-CUDA sample uses the d3dx12.h header, which is 1596 | subject to the MIT license . 1597 | 1598 | ----------------- 1599 | -------------------------------------------------------------------------------- /bin/x86_64_Linux/cuda-checkpoint: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/bin/x86_64_Linux/cuda-checkpoint -------------------------------------------------------------------------------- /images/app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/app.png -------------------------------------------------------------------------------- /images/copy-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/copy-in.png -------------------------------------------------------------------------------- /images/copy-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/copy-out.png -------------------------------------------------------------------------------- /images/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/lock.png -------------------------------------------------------------------------------- /images/moon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/moon.png -------------------------------------------------------------------------------- /images/off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/off.png -------------------------------------------------------------------------------- /images/on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/on.png -------------------------------------------------------------------------------- /images/proc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/proc.png -------------------------------------------------------------------------------- /images/sun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/sun.png -------------------------------------------------------------------------------- /images/unlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/unlock.png -------------------------------------------------------------------------------- /images/vm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NVIDIA/cuda-checkpoint/6ec728aff032c18c9fb0794a272d94c6adcce508/images/vm.png -------------------------------------------------------------------------------- /src/counter.cu: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 3 | * SPDX-License-Identifier: LicenseRef-NvidiaProprietary 4 | * 5 | * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual 6 | * property and proprietary rights in and to this material, related 7 | * documentation and any modifications thereto. Any use, reproduction, 8 | * disclosure or distribution of this material and related documentation 9 | * without an express license agreement from NVIDIA CORPORATION or 10 | * its affiliates is strictly prohibited. 11 | */ 12 | 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | 19 | #define PORT 10000 20 | 21 | __device__ int counter = 100; 22 | __global__ void increment() 23 | { 24 | counter++; 25 | } 26 | 27 | int main(void) 28 | { 29 | cudaFree(0); 30 | 31 | int sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); 32 | sockaddr_in addr = {AF_INET, htons(PORT), inet_addr("127.0.0.1")}; 33 | bind(sock, (sockaddr *)&addr, sizeof addr); 34 | 35 | while (true) { 36 | char buffer[16] = {0}; 37 | sockaddr_in peer = {0}; 38 | socklen_t inetSize = sizeof peer; 39 | int hCounter = 0; 40 | 41 | recvfrom(sock, buffer, sizeof buffer, 0, (sockaddr *)&peer, &inetSize); 42 | 43 | increment<<<1,1>>>(); 44 | cudaMemcpyFromSymbol(&hCounter, counter, sizeof counter); 45 | 46 | size_t bytes = sprintf(buffer, "%d\n", hCounter); 47 | sendto(sock, buffer, bytes, 0, (sockaddr *)&peer, inetSize); 48 | } 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/example.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 4 | # SPDX-License-Identifier: LicenseRef-NvidiaProprietary 5 | # 6 | # NVIDIA CORPORATION, its affiliates and licensors retain all intellectual 7 | # property and proprietary rights in and to this material, related 8 | # documentation and any modifications thereto. Any use, reproduction, 9 | # disclosure or distribution of this material and related documentation 10 | # without an express license agreement from NVIDIA CORPORATION or 11 | # its affiliates is strictly prohibited. 12 | 13 | set -v 14 | 15 | # run the counter application 16 | ./counter & 17 | 18 | #get the PID of counter 19 | PID=$! 20 | 21 | # wait for counter to bind to the UDP socket 22 | sleep 1 23 | 24 | #send a packet 25 | echo hello | nc -u localhost 10000 -W 1 26 | 27 | # confirm that counter is using the GPU 28 | nvidia-smi --query --display=PIDS | grep $PID 29 | 30 | # suspend CUDA 31 | cuda-checkpoint --toggle --pid $PID 32 | 33 | # confirm that counter is no longer using the GPU 34 | nvidia-smi --query --display=PIDS | grep $PID 35 | 36 | # create the directory which will hold the checkpoint image 37 | mkdir -p demo 38 | 39 | # checkpoint counter 40 | criu dump --shell-job --images-dir demo --tree $PID 41 | 42 | # confirm that counter is no longer running 43 | ps --pid $PID 44 | 45 | # restore counter 46 | criu restore --shell-job --restore-detached --images-dir demo 47 | 48 | # resume CUDA 49 | cuda-checkpoint --toggle --pid $PID 50 | 51 | # send another packet 52 | echo hello | nc -u localhost 10000 -W 1 53 | 54 | kill $PID 55 | -------------------------------------------------------------------------------- /src/r570-features.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 3 | * SPDX-License-Identifier: LicenseRef-NvidiaProprietary 4 | * 5 | * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual 6 | * property and proprietary rights in and to this material, related 7 | * documentation and any modifications thereto. Any use, reproduction, 8 | * disclosure or distribution of this material and related documentation 9 | * without an express license agreement from NVIDIA CORPORATION or 10 | * its affiliates is strictly prohibited. 11 | * 12 | * 13 | * Checkpoint and Restore Demo 14 | * Requires display driver 570 or higher and CRIU 4.0 or higher 15 | * 16 | * A parent process launches a child. 17 | * The child initializes CUDA and NVML then the parent checkpoints and restores the child. 18 | * The child continues to use CUDA and NVML after it is restored. 19 | * 20 | * Build with the CUDA 12.8 toolkit as follows: 21 | * gcc -I /usr/local/cuda-12.8/include r570-features.c -o r570-features -lcuda -lnvidia-ml 22 | */ 23 | 24 | #include 25 | #include 26 | #include 27 | #include 28 | 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | 35 | #include 36 | #include 37 | 38 | #define CHECK(x) assert(x) 39 | #define CHECK_EQ(x, y) CHECK((x) == (y)) 40 | #define CHECK_OK(x) CHECK_EQ(x, 0) 41 | 42 | void runParent(pid_t child, int sock, int childSock, const char *libDir); 43 | void checkpointAndRestore(pid_t child, int childSock, const char *libDir); 44 | void runChild(int sock); 45 | void systemf(const char *fmt, ...); 46 | 47 | static char scratch = '\0'; 48 | 49 | int main(int argc, char **argv) 50 | { 51 | if (argc != 2) { 52 | printf("Usage: %s \n", argv[0]); 53 | exit(1); 54 | } 55 | 56 | // Do some sanity checks before starting 57 | const char *libDir = argv[1]; 58 | systemf("ls %s/cuda_plugin.so", libDir); 59 | systemf("which cuda-checkpoint"); 60 | systemf("which criu"); 61 | 62 | int socks[2]; 63 | CHECK_OK(socketpair(AF_UNIX, SOCK_STREAM, 0, socks)); 64 | 65 | pid_t child = fork(); 66 | if (child == 0) { 67 | CHECK_OK(close(socks[1])); 68 | runChild(socks[0]); 69 | exit(0); 70 | } 71 | 72 | runParent(child, socks[1], socks[0], libDir); 73 | return 0; 74 | } 75 | 76 | void runParent(pid_t child, int sock, int childSock, const char *libDir) 77 | { 78 | // wait for checkpoint request 79 | CHECK_EQ(read(sock, &scratch, 1), 1); 80 | 81 | // confirm with the CUDA driver that CUDA is running in the child 82 | CUprocessState state; 83 | CHECK_OK(cuCheckpointProcessGetState(child, &state)); 84 | CHECK_EQ(state, CU_PROCESS_STATE_RUNNING); 85 | 86 | checkpointAndRestore(child, childSock, libDir); 87 | 88 | // unblock child upon restore 89 | CHECK_EQ(write(sock, &scratch, 1), 1); 90 | 91 | // wait for child to finish up 92 | CHECK_EQ(read(sock, &scratch, 1), 1); 93 | } 94 | 95 | void checkpointAndRestore(pid_t child, int childSock, const char *libDir) 96 | { 97 | char imagesDir[] = "images-dir-XXXXXX"; 98 | mkdtemp(imagesDir); 99 | 100 | struct stat sockInfo; 101 | CHECK_OK(fstat(childSock, &sockInfo)); 102 | 103 | systemf("criu dump --shell-job --images-dir %s --libdir %s --ext-unix-sk=%ld --tree %d", 104 | imagesDir, 105 | libDir, 106 | sockInfo.st_ino, 107 | child); 108 | 109 | CHECK_EQ(waitpid(child, NULL, 0), child); 110 | 111 | systemf("criu restore --shell-job --images-dir %s --libdir %s --inherit-fd fd[%d]:socket:[%ld] --restore-detached", 112 | imagesDir, 113 | libDir, 114 | childSock, 115 | sockInfo.st_ino); 116 | } 117 | 118 | void runChild(int sock) 119 | { 120 | CHECK_OK(cuInit(0)); 121 | CHECK_OK(nvmlInit()); 122 | 123 | CUdevice cuDev; 124 | CHECK_OK(cuDeviceGet(&cuDev, 0)); 125 | 126 | int pci[3]; 127 | CHECK_OK(cuDeviceGetAttribute(&pci[0], CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID, cuDev)); 128 | CHECK_OK(cuDeviceGetAttribute(&pci[1], CU_DEVICE_ATTRIBUTE_PCI_BUS_ID, cuDev)); 129 | CHECK_OK(cuDeviceGetAttribute(&pci[2], CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID, cuDev)); 130 | 131 | char busId[64]; 132 | sprintf(busId, "%08X:%02X:%02X.0", pci[0], pci[1], pci[2]); 133 | 134 | nvmlDevice_t mlDev = 0; 135 | CHECK_OK(nvmlDeviceGetHandleByPciBusId(busId, &mlDev)); 136 | 137 | nvmlMemory_t before = {0}; 138 | CHECK_OK(nvmlDeviceGetMemoryInfo(mlDev, &before)); 139 | 140 | CUcontext ctx; 141 | CUdeviceptr ptr; 142 | CHECK_OK(cuDevicePrimaryCtxRetain(&ctx, cuDev)); 143 | CHECK_OK(cuCtxSetCurrent(ctx)); 144 | 145 | const int magic = 0x12345678; 146 | CHECK_OK(cuMemAlloc(&ptr, sizeof magic)); 147 | CHECK_OK(cuMemcpyHtoD(ptr, &magic, sizeof magic)); 148 | 149 | // request checkpoint and wait for restore 150 | CHECK_EQ(write(sock, &scratch, 1), 1); 151 | CHECK_EQ(read(sock, &scratch, 1), 1); 152 | 153 | int value = 0; 154 | CHECK_OK(cuMemcpyDtoH(&value, ptr, sizeof value)); 155 | CHECK_EQ(value, magic); 156 | 157 | nvmlMemory_t after = {0}; 158 | CHECK_OK(nvmlDeviceGetMemoryInfo(mlDev, &after)); 159 | CHECK(before.free > after.free); 160 | 161 | // unblock parent 162 | printf("SUCCESS\n"); 163 | CHECK_EQ(write(sock, &scratch, 1), 1); 164 | } 165 | 166 | void systemf(const char *fmt, ...) 167 | { 168 | char cmd[256]; 169 | va_list lst; 170 | va_start(lst, fmt); 171 | vsprintf(cmd, fmt, lst); 172 | va_end(lst); 173 | printf("> %s\n", cmd); 174 | int status = system(cmd); 175 | CHECK(WIFEXITED(status) && WEXITSTATUS(status) == 0); 176 | } 177 | --------------------------------------------------------------------------------